android - 如何在 Android N 多窗口中将相同的 Activity 启动到单独的窗口中?

标签 android android-7.0-nougat

Android N 开发者预览版 1 的文档表明您可以使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT 请求 Android 在单独的窗口(自由格式)或相邻的 Pane (分屏)中启动 Activity . Google 的示例代码显示使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK 来完成这个。

如果正在启动的 Activity 与启动的 Activity 是不同的类,则此方法工作正常。

因此,例如,如果您有一个 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 实例进入现有窗口或 Pane 。

但是,如果您启动任何其他 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 实例将位于单独的窗口/ Pane /其他任何地方。

This sample project为 N Developer Preview 1 演示了这一点。

关于android - 如何在 Android N 多窗口中将相同的 Activity 启动到单独的窗口中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986714/

相关文章:

android - 异步任务Android执行

android - android服务中的持久网络连接

缺少 Android 7 Intent 附加功能

Android:使用 FileProvider 的外部存储文件的 URI

android - 如何在 Android N 中允许多窗口功能 Activity 明智?

android - 如何在牛轧糖的多窗口模式下定位 toast ?

android - 为什么位图在android中显示黑色背景

android - 该项目正在使用不受支持的 Gradle 版本

android对话框在它后面打开另一个 View

android - 自升级到 Android 7 后,将图像保存到图库无法正常工作