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

前端之家收集整理的这篇文章主要介绍了如何在Android N多窗口中将相同的活动启动到单独的窗口中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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启动同一活动的两个实例?

解决方法

根据 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演示了这一点.

猜你在找的Android相关文章