一个Activity的三个重要状态
Resumed: activity 在屏幕的前面并且获得焦点
Paused:当另外一个Activity显示在当前Activity前面并且当前Activity仍有可见部分,当前Activity进入了该状态,该Activity保存了状态和成员信息,保持着继续被window manager管理, 当系统出现内存极度匮乏的状态时,该Activity 被kill掉.
Stopped:当另外一个Activity显示在当前Activity前面并且当前Activity完全被遮挡不可见,该Activity保存了状态和成员信息,不再被window manager管理, 当系统出现内存极度匮乏的状态时,该Activity 被kill掉.
如果Activity在Paused或Stopped状态,调用该Activity的finish()或杀死该进程,系统能够从内存中去掉它.当Activity再次被开启时,必须要重新创建其所有该创建的.
public class ExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The activity is being created.
}
@Override
protected void onStart() {
super.onStart();
// The activity is about to become visible.
}
@Override
protected void onResume() {
super.onResume();
// The activity has become visible (it is now "resumed").
}
@Override
protected void onPause() {
super.onPause();
// Another activity is taking focus (this activity is about to be
// "paused").
}
@Override
protected void onStop() {
super.onStop();
// The activity is no longer visible (it is now "stopped")
}
@Override
protected void onDestroy() {
super.onDestroy();
// The activity is about to be destroyed.
}
}
上述定义了Activity生命周期的实现方法,这些方法必须实现父类的相关方法,否则会抛出异常, 看了下Activity的实现,基本上就是OnCreate()和onDestroy()有些具体操作,在onDestroy()中对对话框和cursor的关闭操作.现在的在Activity实现中对于cursor的操作已经建议去掉该API
Activity的三个生命周期:
完整周期:在onCreate()开始,在onDestroy()结束,定义布局 开启线程下载网络数据在onCreate(),释放资源 关闭该线程在onDestroy().
可见周期:在onStart()开始,在onStop()结束, 在这个其中能够看见该Activity并且与其进行交互操作 例如注册一个BroadcastReceiver 在onStart()去监控当前UI的变化, 在onStop()中注销该BroadcastReceiver .在一个完整周期内可能会出现多次这种成对出现的操作,当前Acitivity在可见和不可见之间转换的时候就出现一次这种成对操作.
前台周期:在onResume()开始,在onPause()结束,当进入睡眠或对话框出现时会进入onPause()状态,以此来保存需要保存的信息,建议在这两个函数中进行一些轻量级的操作,以免显示缓慢影响用户体验.