在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函数或者直接关闭进程的方式释放它,若是须要再使用,必须从新加载并执行到以前的状态。 java
下面的框图给出了Activity生命周期中几个状态的转换。矩形表示状态转换过程所须要执行的回调方法,这些回调方法是能够重写的。带颜色的曲边矩形表示Activity的主要状态。 android
在跟踪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)。注意,在重写这些方法的最后,必定要调用父类的方法: spa
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(); }