Activity和Task
Activity的生命周期,在Android里面的界面跳转间界面的还回,一般有两种方式一种是自己写函数finish掉当前窗口activity界面就自动还回到原来的界面了。其实这种调用finish函数来结束自己生命周期的activity并没有消亡,而是存留在缓存中,一旦需要新创建的时候就从缓存中把这个调用出来。
还有一种就是用系统自带的还回按钮,这个时候界面的跳转是一个进堆栈出堆栈的过程,返回过程就是把堆栈中顶部的activity出栈,此时顶部的Activity生命周期就结束了。
在界面的进栈过程中,前一个activity在后跳转的这个activity运行到前台并完全覆盖了前一个activity界面的时候可以和用户交互的时候就进入了stop状态,重新还回的时候又启动起来。
这里有一个问题,那就是系统在检测到内存不够或者一些电源管理软件在检测到这些进入stop状态而没有使用的activity的时候会关闭他们,这样有时候就会面临一个数据丢失的状况。这个可以在activity里面重写以下方法来保存数据:
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong("id", 1234567890);
}
Activity可以设置其模式,android:theme="@android:style/Theme.Dialog" >
这样在一个activity启动另外一个设置了模式的activity的时候不会进入stop状态
一个Task可以包含多个Activity每个Task都有一个属于自己的Activity堆栈,当一个activity调用另外一个程序的Activity的时候可以对其android:launchMode=""
进行设置,用来限制这个被调用的Activity在Task堆栈里面的位置。