Android:由同一 Intent 启动的多个 Activity 实例。把一个独特的带到前台?

标签 android android-activity android-intent

我的应用程序启动了多个实例 使用相同 Intent 的相同 Activity 。我的主要 Activity 是类(class)类型 A 并且它对两个相同的 child 执行 startActivity() 类类型 B。所以我们启动了 B1 和 B2。如果 B1 和 B2 都是 暂停(通过按下后退按钮并确保未调用 finish() 在他们身上,所以他们真的暂停了),A 怎么能唯一地带来 B1 还是B2再次到前台?我确实想启动一个新的 B Activity 。我 想要独特地将 B1 或 B2 带到前台。

所以 B1 和 B2 都是这样创建的... Intent intent = new Intent(context, B.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 启动 Activity ( Intent );

现在我想让 A 将 B1(或 B2)带到前景/前面,所以我使用 下面的代码,但是在启动时如何区分 B1 或 B2 Activity ?这只会将 B 的最后一个实例带到顶部 前景。

Intent intent = new Intent(context, B.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 启动 Activity ( Intent );

我尝试保留对 B1 和 B2 的引用并做一些事情 像这样,但这也只适用于 Activity 的最后一个实例 最上面的B级...

Intent intent = new Intent(B1context, B.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); B1context.startActivity(intent);

我什至尝试过这个,但它仍然没有让我得到我独特的 B1 或 B2... Intent intent = B1.getIntent();//即最初的 Intent 开始我 启动 Activity ( Intent );//仍然只把最后一个 B 带到前面 在上面。

提前致谢!

最佳答案

基本上你不能。 NEW_TASK 的目的是在用户看到它们时启动单独的“应用程序”。如果您使用它来尝试操纵通过您的应用程序的流程,那么您就是在滥用它(并破坏了最近的任务等)。

您可以通过子类使它们成为实际的独立类来解决这个问题,但在这样做之前请停下来想想您在这里所做的是否真的完全正确。只有少数几个地方应该使用 NEW_TASK——启动器、从通知切换等。在所有这些情况下,用户启动的目标都有一个非常独特的标识。无论您在做什么,都应该保持这些语义。

关于Android:由同一 Intent 启动的多个 Activity 实例。把一个独特的带到前台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180512/

相关文章:

java - 使用sharedPreferences将值添加到字符串

android - 为什么要对 Ice Cream Sandwich 的 SocketInputBuffer 进行此更改?

android - 崩溃后恢复 Activity 的Android

android - 在三个 Activity 中使用相同的数据

android - onActivityResult 没有从 Intent 中获取字符串

android - 如何处理小部件按钮

android - 自动打开 Android 文件的 Intent Chooser

java - 从java中的DataInputStream获取当前位置

安卓 Espresso : Running multiple tests sequentially

java - Android Activity 只有在它是主要 Activity 时才能正常工作吗?