我的应用程序启动了多个实例 使用相同 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/