Android N开发者预览版1的文档表明,您可以使用Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
请求Android将活动发布到单独的窗口(自由格式)或相邻窗格(分屏)。 Google的示例代码显示使用Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK
来完成此操作。
如果正在启动的活动与开始活动的类不同,则此方法可以正常工作。
因此,例如,如果您有MainActivity
具有以下代码来启动其自身的单独实例:
Intent i=
new Intent(this, MainActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
然后结果是FLAG_ACTIVITY_LAUNCH_ADJACENT
被忽略,新的活动实例进入现有的窗口或窗格。
但是,如果您启动了任何其他活动(例如SecondActivity.class
),那么FLAG_ACTIVITY_LAUNCH_ADJACENT
的效果就像宣传的一样。
如果您希望允许用户打开两个电子表格,两个记事本或两个来自您应用的内容,该怎么办?我们如何使用FLAG_ACTIVITY_LAUNCH_ADJACENT
启动同一活动的两个实例?
答案 0 :(得分:8)
根据this issue的讨论,您还需要融入FLAG_ACTIVITY_MULTIPLE_TASK
:
Intent i=
new Intent(this, MainActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT |
Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(i);
然后两个活动实例将位于单独的窗口/窗格/中。
This sample project为N Developer Preview 1演示了此内容。