Activity的生命周期【翻译】

      在android系统中用activity栈来管理启动的Activity。每次启动一个新的Activity,它会被置于栈顶,而且成为当前活动窗口,原来的Activity还保留在栈中,在当前新启动的窗口下面,并且在新的窗口关闭之前,不会再出现给用户看到。

      在android系统中用activity栈来管理启动的Activity。每次启动一个新的Activity,它会被置于栈顶,而且成为当前活动窗口,原来的Activity还保留在栈中,在当前新启动的窗口下面,并且在新的窗口关闭之前,不会再出现给用户看到。
       Activity有四个状态:
      1)如果Activity是当前窗口,并且在Activity栈顶,状态为running。
      2)如果Activity已经失去了焦点,不再是当前窗口,但是依然可以看到(这种状态可以出现在,新建立的窗口是对话框式等不占全屏的窗口时),状态为paused。这个状态下的Activity依然是活跃的(它维护所有状态,记录信息并且和窗口管理服务保持关联),但是在系统存储空间极限时可以被销毁。
      3)如果Activity的窗口被新建立的窗口完全遮住,状态为stopped。它依旧维持各种状态,记录信息,但是它不再为用户可见(如果用户使用物理键盘返回键,那么当前窗口从running状态,经过onPause(),onStop(),onDestroy()被销毁,之前被覆盖为stopped状态的Activity经过onRestart(),onStart(),onResume()转为running状态),它的窗口被隐藏,通常在空间紧张的时候被系统销毁。
      4)如果Activity处于stopped或者paused状态,系统可以通过调用finish函数或者直接关闭进程的方式释放它,如果需要再使用,必须重新加载并执行到之前的状态。

      下面的框图给出了Activity生命周期中几个状态的转换。矩形表示状态转换过程所需要执行的回调方法,这些回调方法是可以重写的。带颜色的曲边矩形表示Activity的主要状态。

      在跟踪Activity生命周期时,有三个比较重要的循环:
      1)整个生命周期发生在第一个回调方法onCreate(Bundle)和销毁的回调方法onDestroy()之间。Activity在onCreate()方法中执行全局的初始化操作,在onDestroy()中释放所有的资源。例如,在有一个在后台从网络上下载数据的线程在执行,这个进程可能在onCreate()方法中创建,然后在onDestroy()中被终止。
      2)用户可以看到的周期位于onStart()方法和onStop()方法之间。在这之间,用户可以在屏幕上看到窗口,即使它不是当前与用户交互的窗口。在这期间,维护着与用户交互所需的各种资源。例如,可以在onStart()方法中注册一个BroadcastReceiver来接收所有能够影响UI的变化所发出的广播,然后当用户什么都看不到的时候,在onStop()方法中注销这个接收器。伴随着窗口的出现和隐藏,这两个方法可以多次调用。
 

      3)Activity在前端执行,在onResume()方法和onPause()方法之间。这期间,Activity是当前与用户进行交互的窗口,这两个方法也是可以多次执行的。

      Activity有一组方法来维护整个生命周期,这些方法都可以被重写来完成用户指定的动作。所有的Activity类都会重写onCreate(Bundle)进行初始化;许多情况下也会重写onPause()方法(many will also implement onPause() to commit changes to data and otherwise prepare to stop interacting with the user)。注意,在重写这些方法的最后,一定要调用父类的方法: 

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();
}

转载于:https://my.oschina.net/u/779520/blog/83725

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值