我有一个小部件,可以在单击时弹出小对话框。这些对话框由singleInstance launchMode中名为RemoteActivity的活动显示。在其中一个对话框中,有一个按钮用于启动主应用程序MainActivity,它具有标准的launchMode。
但是,当单击此按钮并调用startActivity()时,MainActivity不会启动,虽然我可以在logcat中看到相应的“Starting activity:Intent {...}”。
如果我将RemoteActivity的launchMode设置为标准,那么MainActivity会启动,但这不是我想要的,RemoteActivity只是widget的扩展,我不希望它与任何其他活动堆叠。
我也尝试过使用FLAG_ACTIVITY_NEW_TASK,但它没有帮助,无论如何都不需要according to the docs:
一个“singleInstance”活动,关于 另一方面,不允许其他 活动成为其任务的一部分。 这是任务中唯一的活动。如果 它开始了另一项活动 活动被分配给不同的 任务 - 就像FLAG_ACTIVITY_NEW_TASK一样 是故意的。
如何启动我的主要活动?
UPDATE / ERRATA:
MainActivity实际上已启动,但前提是它尚未成为任务的一部分。如果我通过启动器正常启动MainActivity,然后按Back退出,则RemoteActivity会启动MainActivity。
但是,如果我按Home不离开Back,而是按Home离开MainActivity,则RemoteActivity无法启动MainActivity,尽管意图出现在logcat中。
我在Froyo上测试了这个。
知道发生了什么事吗?
答案 0 :(得分:0)
也许noHistory flag会对你要找的东西有用吗?
答案 1 :(得分:0)
我发现了问题:只有在RemoteActivity中的startActivity()之前调用finish()时才会出现此行为。如果我在finish()之前调用startActivity(),那么无论MainActivity是否已经是现有任务的一部分,它都能正常工作。
去图......