我想重现这里显示的情况: http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html#TaskLaunchModes 我使用活动X0启动应用程序,然后将活动A1作为新活动启动 任务和开放活动A2作为单一任务。接下来我打开活动B1作为 新任务,然后我开始活动B2,然后我想切换到 活动A2。在后面我会去A1,然后是B2,B1,最后到X0。
这是我的清单:
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
<activity
android:name="X0"
android:label="@string/app_name">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="A1"
android:allowTaskReparenting="false"
android:taskAffinity="@string/task_A"
android:label="@string/app_name">
</activity>
<activity
android:name="A2"
android:allowTaskReparenting="false"
android:taskAffinity="@string/task_A"
android:launchMode="singleTop"
android:label="@string/app_name">
</activity>
<activity
android:name="B1"
android:allowTaskReparenting="false"
android:taskAffinity="@string/task_B"
android:label="@string/app_name">
</activity>
<activity
android:name="B2"
android:allowTaskReparenting="false"
android:taskAffinity="@string/task_B"
android:launchMode="singleTask"
android:label="@string/app_name">
</activity>
</application>
起初我没有任何allowTaskReparenting和taskAffinity,我开始了 试验这些设置。
这是我的活动代码,活动之间也是如此:
((TextView) findViewById(R.id.title)).setText("X0" + getTaskId() + isTaskRoot()); //some debugging
findViewById(R.id.a1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), A1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);
}
});
findViewById(R.id.a2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), A2.class);
startActivity(intent);
}
});
findViewById(R.id.b1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), B1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);
}
});
findViewById(R.id.b2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), B2.class);
startActivity(intent);
}
});
现在我点击A1,A2,B1,B2,A2,A2应该来自任务A, 但它会在堆栈B中打开新的活动A2。
是否可以在我创建的任务之间切换?