Android Activity生命周期的学习以及Logcat的使用
2010-05-31 13:51:00 来源:WEB开发网3. 一个activity的 前台生命周期 自 onResume() 调用起,至相应的 onPause()调用为止。在此期间,activity位于前台最上面并与用户进行交互。activity会经常在暂停和恢复之间进行状态转换──比如说当设备转入休眠状态或有新的activity启动时,将调用onPause() 方法。当activity获得结果或者接收到新的intent的时候会调用onResume() 方法。因此,在这两个方法中的代码应当是轻量级的。
当一个activity从这个状态转变到另一个状态时,它被以下列protected方法所通知:
public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }
我们可以重载所有这些方法以在状态改变时进行合适的工作。所有的activity都必须实现 onCreate() 用以当对象第一次实例化时进行初始化设置。很多activity会实现 onPause()以提交数据变化或准备停止与用户的交互。
要注意的是,onPause(),onStop(),onDestory()这3个方法是可以被系统直接kill的,当系统内存不足的时候。而平常从一个activity转向/回到另一个activity时,当新activity是full screen(弹出窗口,例如AlertDialog是不算的)的时候就会call 前一个activity的onPause(),然后call onStop(),而无论onPause或者onStop,都有可能被kill,所以一般在onPause就会执行savedata操作将所有持久性数据(比如用户的编辑结果)写入存储之中。
现在我们来看看两个activity在同一个进程内的调用情况:
1. 调用当前activity的 onPause() 方法。
2. 接着调用新启动activity的onCreate()、 onStart()和onResume()方法。
3. 然后,如果启动的activity不再于屏幕上可见,则调用它的onStop()方法。
以下我使用Logcat记录下来的Activity调用过程中的方法调用顺序:
1. 点击按钮去启动 Activity1,就会看到
05-08 09:39:48.389: DEBUG/Activity1(313): onCreate Activity 1 05-08 09:39:48.399: DEBUG/Activity1(313): onStart Activity 1 05-08 09:39:48.399:
更多精彩
赞助商链接