您的位置:首页 > 其它

Activity生命周期总结

2011-12-12 14:11 162 查看
当Activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理,当前活动的Activity位于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也可能从非活动状态转入活动状态。

Activity大致分为四个状态:

活动状态:当前Activity位于前台,用户可见,可以获得焦点

暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点

停止状态:该Activity不可见,失去焦点 。

销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束

如图显示了Activity生命周期:



在Activity的生命周期中,如下方法会被系统回调。

onCreate(BundlesavedStatus):创建Activity时被回调。

onStart():启动Activity时被回调。

onRestart():重新启动Activity时被回调。

onResume():恢复Activity时被回调。

onPause():暂停Activity时被回调

onStop():停止Activity时被回调

onDestroy():销毁Activity时被回调。

package cn.class3g.activity;

importandroid.app.Activity;

importandroid.app.AlertDialog;

importandroid.app.AlertDialog.Builder;

importandroid.content.DialogInterface;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

public classActivityLifeCydeActivity extends Activity {

private static final String TAG ="lifeCycle";

public void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Log.i(TAG, "onCreate");

}

protected void onStart() {

super.onStart();

Log.i(TAG, "onStart");

}

protected void onResume() {

super.onResume();

Log.i(TAG, "onResume");

}

protected void onPause() {

super.onPause();

Log.i(TAG, "onPause");

}

protected void onStop() {

super.onStop();

Log.i(TAG, "onStop");

}

protected void onRestart() {

super.onRestart();

Log.i(TAG, "onRestart");

}

protected void onDestroy() {

super.onDestroy();

Log.i(TAG, "onDestory");

}

}

1、运行activity时:

onCreate ----- onStart ---- onResume

2、点返回键

onPause ---- onStop ----- onDestory

3、点击Home

onPause ---- onStop

4.长按Home重新回到ActivityLifeCydeActivity

onRestart ---- onStart ---- onResume

5.切换至SecondActivity之上

onPause ---- onStop

6.切换回 ActivityLifeCydeActivity

onRestart ---- onStart ---- onResume

创建一个对话框样式的activity:DialogActivity

7.切换至DialogActivity

onPause

8.按返回键返回至ActivityLifeCydeActivity

onResume

创建AlertDialog对话框

显示对话框并返回,发现此时并不能触发ActivityLifeCydeActivity实例的状态变化,也就不会调用其生命周期中任何函数

protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG, "onRestoreInstanceState()");
}

protected void onSaveInstanceState(BundleoutState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "onSaveInstanceState()");
}

1. 运行

2. 按Home

onSaveInstanceState --- onPause ---- onStop

3. 在桌面,长按Home重新回到ActivityLifeCydeActivity

onRestart ----onStart ---- onResume

此时并没有触发onRestoreInstanceState()

总结:

Activity 从创建到进入运行态所触发的事件

onCreate()-->onStart-->onResume()

从运行态到停止态所触发的事件

onPause()--->onStop()

从停止态到运行态所触发事件

onRestart()-->onStart()--->onResume()

从运行态到暂停态所触发事件

onPause()

从暂停态到运行态所触发事件

onResume()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: