(原创)Activity启动模式之singleTask

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.

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

原文地址:https://www.cnblogs.com/BlogCommunicator/p/4881133.html