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.

默认的启动模式并不会这样,这里是要注意的地方.

04-23 17:02