如何多次创建相同的活动以获得类似Google Chrome标签的效果?

时间:2016-06-30 09:53:58

标签: java android android-intent

我正在为Android创建一个浏览器,我希望复制我的Activity以创建具有相同活动的新多任务任务。

Intent intent=new Intent(this,  MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

这是我的代码,请帮忙。 感谢

3 个答案:

答案 0 :(得分:1)

使用此替换标志new_task with new_document

Intent intent = new Intent(this,MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);     startActivity(意向);

答案 1 :(得分:1)

有两种方法可以做到这一点。两者都在Android的Recents Screen guide中得到了很好的描述。

第一种方法是使用意图标志:

final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(newDocumentIntent);

第二种方法是使用<activity>属性android:documentLaunchMode

答案 2 :(得分:0)

你可以试试 FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_DOCUMENT

  

FLAG_ACTIVITY_MULTIPLE_TASK

     

此标志用于创建新任务并在其中启动活动。   此标志始终与FLAG_ACTIVITY_NEW_DOCUMENT或   FLAG_ACTIVITY_NEW_TASK。在这两种情况下,这些标志都会搜索   通过匹配此Intent的现有任务。只有没有这样的   找到任务将创建一个新任务。配对时   FLAG_ACTIVITY_MULTIPLE_TASK将这两种行为都修改为   跳过搜索匹配任务并无条件启动新任务   任务。与FLAG_ACTIVITY_NEW_TASK一起使用时,请勿使用此标志   除非您正在实现自己的顶级应用程序启动器。   与FLAG_ACTIVITY_NEW_TASK结合使用以禁用   将现有任务带到前台的行为。设置时,a   始终开始新任务来托管Intent的Activity,   无论是否已经存在运行的任务   同样的事情。

     

由于默认系统不包含图形任务管理,   除非您为用户提供某种方式,否则不应使用此标志   返回到已启动的任务。看到   FLAG_ACTIVITY_NEW_DOCUMENT,了解此标志用于创建的详细信息   新文件任务。

     

<强>&GT;如果其中一个为FLAG_ACTIVITY_NEW_TASK或,则忽略此标志   FLAG_ACTIVITY_NEW_DOCUMENT也未设置。

FLAG_ACTIVITY_NEW_DOCUMENT

  

此标志用于将文档打开到以root为根的新任务中   此意图启动的活动。通过使用这个标志,或其   等效属性,documentLaunchMode的多个实例   包含不同文件的相同活动将在最近出现   任务清单。

     

使用documentLaunchMode的activity属性形式是   优于此处描述的Intent标志。属性表单   允许Activity为所有人指定多个文档行为   Activity的启动器,而使用此标志需要每个Intent   启动Activity以指定它。

     

请注意此标志w.r.t的默认语义。是否   在活动结束后保留​​最近的条目   不同于使用FLAG_ACTIVITY_NEW_TASK和   documentLaunchMode - 如果此标志用于创建新标志   最近条目,然后默认情况下,该条目将被删除一次   活动结束了。您可以使用修改此行为   FLAG_ACTIVITY_RETAIN_IN_RECENTS。