Android中用于显示的容器是Activity,一个Activity对应一个显示页面。
- Activity生命7方法
Activity对象运行与它自己的7个方法密切相关,从对象的创建到销毁,这7个方法在Activity不同阶段运行,具体的方法介绍如下表格所示:
| Method | Description | Killable | Next |
| onCreate | 当启动新的Activity的时候被调用 | No | onStart() |
| onStart | 当Activity对用户即将可见时调用 | No | onResume() or onStop() |
| onRestart | 重新启动Activity时调用(此方法是重启留在缓存中的Activity) | No | onStart() |
| onResume | 当Activity界面可与用户交互时调用 | No | onPause() |
| onPause | 当系统要启动一个其他的activity时调用,用于保存当前数据 | Yes | onResume() or onStop() |
| onStop | 该Activity已经不可见时调用 | Yes | onRestart() or |
| onDestroy | 当Activity被finish或手机内存不足被销毁的时候调用 | Yes | nothing |
- Activity LifeCycle
Google官方提供了Activity LifeCycle的运行图,个人觉得官方提供的图非常简洁明了地介绍了Activity的运行周期:

如上图所示,当启动Activity1时,首先调用onCreate方法初始化Activity的内容,当Activity显示出来的时候调用onStar方法(此时Activity只能看不能点击使用),当Activity可以被点击时,则调用onResume方法;
如果新一个Activity2完全覆盖原Activity1,首先会让Activity1执行onPause方法暂存Activity1的数据,然后依次执行onCreate、onStart、onResume方法启动Activity2,最后因为Activity1会被Activity2完全覆盖,所以会执行Activity1的onStop方法;
另一种情况,如果新Activity2未完全覆盖Activity1(可能只是一个弹出层),则运行流程与上面说的执行流程相同,只是不会执行Activity1的onStop方法;
如果点击手机上的“返回”按钮,当前Activity对象会被销毁,此时就会执行onDestory方法。
- Android的Task
Android的Task是一个Activity栈,保存的是所有正运行的application的Activity数据,Task中的Activity可以分属于不同的application,一个Activity栈也可能是由一个或多个Task组成,Task数据仅仅是临时保存,若手机内存不足或长时间未使用该application,Android会自动销毁Task部分Activity数据。
- onSaveInstanceState保存数据
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(savedInstanceState!=null && savedInstanceState.containsKey(ET_KEY)){
EditText et = (EditText)findViewById(R.id.et);
et.setText(savedInstanceState.getString(ET_KEY));
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
EditText et = (EditText)findViewById(R.id.et);
outState.putString(ET_KEY, et.getText().toString());
}
我的百度文库有关于Android Activity生命周期的ppt,免费下载,希望对大家有所帮助:
http://wenku.baidu.com/view/db19524ce518964bcf847cf9.html
附Activity生命周期例子,版本2.1
本文详细介绍了Android中Activity的生命周期,包括七个关键方法的作用及其调用时机,并解释了如何通过onSaveInstanceState方法保存Activity状态,以防在内存紧张时丢失数据。
464

被折叠的 条评论
为什么被折叠?



