标签:
Activity的生命周期模型在Google提供的官方文档上有比较详细的一个图示

public class HelloActivity extends Activity {
public static final String TAG = "HelloActivity";
/**
* 第一个被运行的方法
* 初始化页面
* Bundle恢复上次的状态
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v(TAG, "onCreate");
}
/**
* 从onStop回到Activity的时候会执行
* 按HOME键的时候会执行onStop,重新回到程序会执行这个方法
*/
@Override
protected void onRestart() {
super.onRestart();
Log.v(TAG, "onRestart");
}
/**
* 在onCreate,onRestart后面执行
*/
@Override
protected void onStart() {
super.onStart();
Log.v(TAG, "onStart");
}
/**
* 在onStart后面执行,执行这个方法后这个Activity就处于全部Activity堆栈的最上面
* 进入用户可见可操作的状态
*/
@Override
protected void onResume() {
super.onResume();
Log.v(TAG, "onResume");
}
/**
* 当其他Activity启动时这个方法会执行
* 按HOME和BACK都会执行这个方法
* 最好在这个方法中提交或者保存数据,因为很有可能再也不会回到这个activity中。
* 这个方法最好不要执行太长时间,因为下个activity开始执行前会等待这个方法返回。
*/
@Override
protected void onPause() {
super.onPause();
Log.v(TAG, "onPause");
}
/**
* activity很久没被显示,要被销毁,系统资源缺乏,都会调用这个方法
* 按HOME和BACK都会执行这个方法
*/
@Override
protected void onStop() {
super.onStop();
Log.v(TAG, "onStop");
}
/**
* 调用finish方法,或者系统回收资源时调用
*/
@Override
protected void onDestroy() {
super.onDestroy();
Log.v(TAG, "onDestroy");
}
}
情形一、一个单独的Activity的正常的生命过程是这样的:onCreate->onStart->onPause->onStop->onDestroy。例如:运行一个Activity,进行了一些简单操作(不涉及页面的跳转等),然后按返回键结束。
情形二、有两个Activity(a和b),一开始显示a,然后由a启动b,然后在由b回到a,这时候a的生命过程应该是怎么样的呢(a被b完全遮盖)?
a经历的过程为onCreate->onStart->onResume->onPause->onStop->onRestart->onStart->onResume。这个过程说明了图中,如果Activity完全被其他界面遮挡时,进入后台,并没有完全销毁,而是停留在onStop状态,当再次进入a时,onRestart->onStart->onResume,又重新恢复。
情形三、基本情形同二一样,不过此时a被b部分遮盖(比如给b添加个对话框主题 android:theme="@android:style/Theme.Dialog")
a经历的过程是:onCreate->onStart->onResume->onPause->onResume
所以当Activity被部分遮挡时,Activity进入onPause,并没有进入onStop,从Activity2返回后,执行了onResume
情形四、 打开程序,启动a,点击a,启动AlertDialog,按返回键从AlertDialog返回。
a经历的过程是:onCreate->onStart->onResume
当启动和退出Dialog时,Activity的状态始终未变,可见,Dialog实际上属于Acitivity内部的界面,不会影响Acitivty的生命周期。
标签:
原文地址:http://www.cnblogs.com/xgjblog/p/4692941.html