Activity 生命周期

Activity 生命周期

-学习笔记1(金海建)

目的:了解Android Activity的生命周期。学习一套新的应用框架,需要了解其基本的调用关系,像学习Windows需要知道什么时候调用了WM_CREATE、WM_CLOSE、WM_DESTROY等消息。同样的,不管你是什么平台、什么开发框架,其基本原理都是差不多的。了解了Activity的生命周期之后,对Android程序会有深入的了解。

先来看一下google文档里关于Activity生命周期的状态图。

Activity 生命周期_第1张图片

虽然网上也有介绍Activity的文档,但还是觉得需要自己动手,比较能够深入的了解。我写了一个Demo

Hello.java

public class hello extends Activity { /** Called when the activity is first created. */ private static final String TAG="Android_lifecycle"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.v(TAG, "onCreate"); Button btOpenSubpage = (Button)this.findViewById(R.id.opensubpage); btOpenSubpage.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(); intent.setClass(hello.this, Subpage.class); startActivity(intent); } }); } @Override protected void onPause() { super.onPause(); Log.v(TAG, "OnPause"); } @Override protected void onRestart() { super.onRestart(); Log.v(TAG, "onRestart"); } @Override protected void onResume() { super.onResume(); Log.v(TAG, "onResume"); } @Override protected void onStart() { super.onStart(); Log.v(TAG, "onStart"); } @Override protected void onStop() { super.onStop(); Log.v(TAG, "onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.v(TAG, "onDestroy"); } } Subpage.java public class Subpage extends Activity { private final String TAG="subpage"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.subpage); Button btClose = (Button)this.findViewById(R.id.switch2main); btClose.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { finish(); } }); } }  

Activity 生命周期_第2张图片

打开程序的log:

clip_image004[6]

我们可以看出,Activity被创建的时候,其调用过程是onCreate()->onStart()->onResume(),这三个方法

点击”Open subpage”,log如下:

clip_image005[10]

当切换到其他activity时,activity会处于stop状态。

Activity 生命周期_第3张图片

点击Switch main

clip_image008[6]

我们可以看出,再次返回之前的Activity时,其调用过程是onRestart()->onStart()->onResume(),这三个方法。可以看出,并没有调用onCreate方法,在Android2.2上,当返回的时候,是可以维持它原有的状态的。

按Home

clip_image005[11]

效果跟切换到其他Activity一样。

按Back

clip_image009[6]

退出程序,最终调用onDestroy方法。

你可能感兴趣的:(android,框架,String,Class,文档,button)