Android以栈的形式管理activity。
活动状态
1.运行状态:栈顶的activity
2.暂停状态:不是处于栈顶,但是仍然可见
3.停止状态:不处于栈顶,并完全不可见.在其他地方需要内存时,可能会被系统回收
4.销毁状态:从栈中移除,被系统回收,为手机提供更多内存
生存期
onCreate()。activity第一次被创建时调用
onStart()。activity由不可见变为可见时调用
onResume()。activity准备和用户交互时调用activity(运行状态)在栈顶
onPause()。android启动另一个activity时调用(执行速度要快,否则影响新的栈顶activity使用)
onStop()。activity完全不可见时调用。
onDestroy()。activity销毁前调用。
onRestart()。activity由停止状态变为运行状态前调用
活动被回收数据保存
onSaveInstanceState()。回调方法,activity回收前调用。用于保存临时数据
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
String testString= "test";
outState.putString("test_String",testString);
}
获取临时数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
String testString = savedInstanceState.getString("test_string");
Log.v("FirstActivityTestString",testString);
}
}
activity启动模式
standard : android默认启动模式,栈管理,每次都会创建新的实例
singleTop : 如果activity在栈顶,则不创建新的实例,并直接使用
singleTask : 如果栈里面有这个activity就不创建新的实例
singleInstance : 创建一个新的栈,并且将activity加入到这个新的栈里面
//栗子例子
<activity android:name=".FirstActivity"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>