如何从singleInstance活动开始活动?
我有一个小部件,可以在点击时弹出小对话框。这些对话框由singleInstance launchMode中名为RemoteActivity的活动显示。在其中一个对话框中,有一个按钮用于启动具有标准launchMode的主应用程序MainActivity。如何从singleInstance活动开始活动?
但是,当单击此按钮并调用startActivity()时,虽然我可以在logcat中看到相应的“Starting activity:Intent {...}”,但未启动MainActivity。
如果我将RemoteActivity的launchMode设置为标准,那么MainActivity会启动,但这不是我想要的,RemoteActivity只是widget的扩展,我不希望它与任何其他活动堆叠。
我也试图与FLAG_ACTIVITY_NEW_TASK,但它并没有帮助,而且它不应该是必要的反正according to the docs:
A“singleInstance”活动,对 另一方面,允许没有其他 活动成为其任务的一部分。 这是该任务中唯一的活动。如果 它启动另一个活动,那么 活动被分配给不同的 任务 - 就好像FLAG_ACTIVITY_NEW_TASK 的意图。
如何启动我的主要活动?
UPDATE /勘误表:
在MainActivity实际上推出,但只有当它是不是已经是任务的一部分。如果我通过启动程序正常启动MainActivity,然后按Back退出,则RemoteActivity会启动MainActivity。
但是,如果不按下返回,我按Home离开MainActivity,然后RemoteActivity无法启动MainActivity,尽管意图出现在logcat中。
我在Froyo测试这个。
有什么想法发生了什么?
我发现这个问题:只有在RemoteActivity的startActivity()之前调用finish()时才会发生此行为。如果我在finish()之前调用startActivity(),那么MainActivity是否已经是现有任务的一部分,它可以正常工作。
去图...
我刚刚试图添加noHistory到RemoteActivity,它并没有帮助。我不打算将它添加到MainActivity中,我不想要它,它必须是历史的一部分。顺便说一下,有一个微妙的,请参阅我的“更新”。 – olivierg 2011-04-27 13:44:59