如何在 Android N Multi-Window 中将相同的 Activity 发射到单独的 Window?
How Do I Launch the Same Activity Into a Separate Window in Android N Multi-Window?
Android N Developer Preview 1 的文档表明您可以使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
请求 Android 将 activity 启动到单独的 window(自由格式)或相邻窗格(分屏)。 Google 的示例代码显示使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK
来完成此操作。
如果正在启动的 activity 与启动的 class 不同,则此操作正常。
因此,例如,如果您的 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
被忽略,新的 activity 实例进入现有的 window 或窗格。
但是,如果您启动任何其他 activity(例如,SecondActivity.class
),则 FLAG_ACTIVITY_LAUNCH_ADJACENT
会像宣传的那样工作。
如果您想让用户从您的应用程序中打开两个电子表格、两个记事本或两个其他东西怎么办?我们如何使用 FLAG_ACTIVITY_LAUNCH_ADJACENT
启动相同 activity 的两个实例?
根据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);
然后两个 activity 实例将在单独的 windows/panes/whatever.
This sample project 为 N Developer Preview 1 演示了这一点。
Android N Developer Preview 1 的文档表明您可以使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
请求 Android 将 activity 启动到单独的 window(自由格式)或相邻窗格(分屏)。 Google 的示例代码显示使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK
来完成此操作。
如果正在启动的 activity 与启动的 class 不同,则此操作正常。
因此,例如,如果您的 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
被忽略,新的 activity 实例进入现有的 window 或窗格。
但是,如果您启动任何其他 activity(例如,SecondActivity.class
),则 FLAG_ACTIVITY_LAUNCH_ADJACENT
会像宣传的那样工作。
如果您想让用户从您的应用程序中打开两个电子表格、两个记事本或两个其他东西怎么办?我们如何使用 FLAG_ACTIVITY_LAUNCH_ADJACENT
启动相同 activity 的两个实例?
根据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);
然后两个 activity 实例将在单独的 windows/panes/whatever.
This sample project 为 N Developer Preview 1 演示了这一点。