【问题标题】:How to start an activity from a singleInstance activity?如何从 singleInstance 活动开始活动?
【发布时间】:2011-04-27 13:32:20
【问题描述】:

我有一个小部件,点击时可以弹出小对话框。这些对话框由 singleInstance launchMode 中名为 RemoteActivity 的活动显示。在其中一个对话框中,有一个用于启动主应用 MainActivity 的按钮,它具有标准的启动模式。

但是,当单击此按钮并调用 startActivity() 时,MainActivity 不会启动,尽管我可以在 logcat 中看到相应的“Starting Activity:Intent { ... }”。

如果我将 RemoteActivity 的 launchMode 设置为标准,则会启动 MainActivity,但这不是我想要的,RemoteActivity 只是小部件的扩展,我不希望它与任何其他活动堆叠。

我也尝试过使用 FLAG_ACTIVITY_NEW_TASK,但没有帮助,而且无论如何都不需要according to the docs

一个“singleInstance”活动,在 另一方面,不允许其他 活动成为其任务的一部分。 这是任务中的唯一活动。如果 它开始了另一项活动,即 活动被分配给不同的 任务——好像 FLAG_ACTIVITY_NEW_TASK 是有目的的。

如何启动我的主要活动?

更新/勘误:

MainActivity 实际启动,但前提是它还不是任务的一部分。如果我通过启动器正常启动 MainActivity,然后按 Back 退出,那么 RemoteActivity 确实会启动 MainActivity。

但是,如果我没有按返回,而是按 Home 离开 MainActivity,那么 RemoteActivity 无法启动 MainActivity,尽管意图出现在 logcat 中。

我正在 Froyo 上对此进行测试。

知道发生了什么吗?

【问题讨论】:

    标签: android android-activity launchmode


    【解决方案1】:

    也许noHistory flag 可以满足您的需求?

    【讨论】:

    • 我刚刚尝试将 noHistory 添加到 RemoteActivity 并没有帮助。我不打算将它添加到 MainActivity,我不想要这个,它必须成为历史的一部分。对了,有一个微妙之处,请看我的“更新”。
    【解决方案2】:

    我发现了问题:只有在 RemoteActivity 中的 startActivity() 之前调用 finish() 时才会出现这种情况。如果我在 finish() 之前调用 startActivity() ,那么无论 MainActivity 是否已经是现有任务的一部分,它都可以正常工作。

    去看看……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      相关资源
      最近更新 更多