9

Android N Developer Preview 1 的文档表明您可以使用Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT请求 Android 将 Activity 启动到单独的窗口(自由形式)或相邻的窗格(分屏)中。谷歌的示例代码显示使用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来启动同一活动的两个实例?

4

1 回答 1

12

根据对这个问题的讨论,你还需要融入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);

然后这两个活动实例将在单独的窗口/窗格/任何东西中。

此示例项目为 N Developer Preview 1 演示了这一点。

于 2016-03-14T11:48:21.787 回答