首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

懂得 Activity 的生命周期

2012-07-05 
理解 Activity 的生命周期把Activity看成一个页面,在Android系统中,Activity 被作为 Activity 栈进行管理.

理解 Activity 的生命周期

把Activity看成一个页面,在Android系统中,Activity 被作为 Activity 栈进行管理.
- 当前活动的Activity 处于栈顶.
- 非活动的Activity 压在栈中, 处于等待状况

?

一个Activity的状态有如下4种:
- 活动. (处于栈顶, 有焦点,可见)
- 暂停. (失去焦点,但可见)
- 停止. (失去焦点,不可见)
- 销毁. (被系统或进程结束)

?

一个Activity的方法有如下7个:
- .onCreate()??? 创建
- .onStart()????? 启动
- .onRestart()??? 重启.
- .onResume()? 恢复
- .onPause()???? 暂停
- .onStop()????? 停止
- .onDestroy()?? 销毁

?

Activity 的生命周期的 Cases
a. Activiy1 启动
?? - Code:

super.onCreate()

?
?? - 运行顺序: ( Activity1 : onCreate() -> onStart() ->onResume() )

?

b. 从Activity1 跳转到 Activity2, 然后关闭Activity1.
?? - Code:?
??????

Intent intent = new Intent();  //新建一个Intent对象.intent.setClass(Activity1.this, Activity2.class);  //设定Intent要启动的类. startActivity(intent); //启动一个新的ActivityActivity1.this.finish();  //关闭当前的Activity.

???? - 运行顺序: (Activity1: onPause() )->? ( Activity2: onCreate() ->onStart() ->onResume()) -> (Activity1:onStop() ->onDestroy())

?

c. 关闭Activity1, 退出程序 , 或者按 "BACK" 键.
??? - Code:?
??????

Activity1.this.finish(); 

?
???? -运行顺序: Activity1: onPause()->onStop()->onDestroy();

?

d. 按"HOME"键, 然后再运行程序.
???? - 运行顺序: Activity1: onPause()->onStop()? => 运行其他程序 => 再运行本程序: Activity1: onRestart()->onStart()-)>onResume()

?

e. 刷新Activity1
??? - Code:

??

public class LifeCycleActivity extends Activity {    /** Called when the activity is first created. */private static final String TAG = "MainActivity";         @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         Log.i(TAG, "onCreate()");                  Button button = (Button) this.findViewById(R.id.button);         button.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {               //Intent intent = new Intent(LifeCycleActivity.this, Activity2.class);               //startActivity(intent);             reload();            }         });     }      @Override     protected void onDestroy() {         Log.i(TAG, "onDestroy()");         super.onDestroy();     }      @Override     protected void onPause() {          Log.i(TAG, "onPause()");         super.onPause();     }      @Override     protected void onRestart() {          Log.i(TAG, "onRestart()");         super.onRestart();     }      @Override     protected void onResume() {          Log.i(TAG, "onResume()");         super.onResume();     }      @Override     protected void onStart() {          Log.i(TAG, "onStart()");         super.onStart();     }      @Override     protected void onStop() {          Log.i(TAG, "onStop()");         super.onStop();     }          public void reload(){    Intent intent = getIntent();    this.finish();    startActivity(intent);    }} 

?-运行顺序: onCreate()->onStart()->onResume() ==> 点按纽后 onPause()->onCreate()->onStart()->onResume()->onStop()->onDestroy()

?

更多的可以参考:

http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/

热点排行