Android SDK 开发之应用程序基础
2010-03-23 04:53:00 来源:WEB开发网Activity lifecycle
Activity有三种基本状态:
当它在屏幕前台时(出于当前task的activity stack的顶端)状态为active或running。该activity是用户动作的焦点。
如果它失去焦点但仍然对用户可见,它的状态为paused。也就是说,另一个activity位于其顶端,并且那个activity是透明的或者未覆盖整个屏幕,因此该暂停的activity仍然有一部分可见。一个暂停的activity完全是活着的(它保存了所有的状态和成员信息并且和窗口管理器连接),但是可以在极端内存不足时可以被系统关闭。
当它被另一个activity完全覆盖时状态为stopped。它仍然保存了所有的状态和成员信息。然而,它对用户是不可见的因此它的窗口被隐藏了,并且在系统在其它地方需要内存的时候常常kill掉它。
如果一个activity处于paused或stopped状态,系统可以将其从内存中去掉,可以告诉它关闭(调用它的finish()方法),或者直接kill掉它的进程。当它再次显示时,它必须完全重启并恢复到原来的状态。
当一个activity从一个状态转换到另一个状态,它会被通知,这是通过调用下面的函数完成的:
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
所有这些方法都可以被重写来做状态改变时应该做的工作。所有的activity必须实现onCreate()方法来做初始化工作。许多activity实现onPause()来确认数据修改并做好停止和用户交互的准备。
调用父类方法
activity的声明周期方法必须首先调用其父类版本。例如:
protected void onPause() {
super.onPause();
. . .
}
这7个方法一起定义了一个activity的生命周期。通过实现这些方法,你可以管理3个嵌套的生命周期循环:
完整周期:从第一次调用onCreate()到一次onDestroy()。一个activity在onCreate()中做所有的"全局"状态的初始化设置,在 onDestroy()中释放所有的资源。例如,如果它有一个后台线程从网络下载数据,它可以在onCreate()中创建该线程并在
更多精彩
赞助商链接