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