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