android中activity有四种启动模式
standard(默认):在同一个任务栈中可以有重复的activity,基本没什么限制
singleTop:只有当此activity在栈顶时,去创建它,不会有新的activity生成,而是调用onNewInstance()方法
singleTask:在栈中只有一个activity实例,回调onNewInstance(),会把它之上的activity都finish()掉
singleInstance:会在新的任务栈中创建
设置启动模式在AndroidManifest.xml中
<activity
android:name=".MainActivity"
android:launchMode="singleTask"
android:label="@string/app_name" >
onNewIntent()方法
/**
* 只有在新的intent时候才会调用此方法,Home键退出之后再进来,或者本例中跳转过来
*/
@Override
protected void onNewIntent(Intent intent) {
Toast.makeText(MainActivity.this, "onNewIntent调用了", 0).show();
super.onNewIntent(intent);
}
配合singleTask和onNewIntent()可以做到Home键再点击图标进来后调用此方法.
但是设置MainActivity为singleTask之后,Home键后再点击图标总会打开MainActivity,无论home时在哪个activity.
默认的启动模式并不会这样,这里是要注意的地方.