【问题标题】:How to enforce activity if app is running?如果应用程序正在运行,如何强制执行活动?
【发布时间】:2010-01-22 08:13:53
【问题描述】:

我从我的 Widget 启动一个 Activity,它应该启动一个特殊视图。
但如果应用程序已经在运行(没有留下后退按钮),Android 会激活上次显示的 Activity。
是否有任何标志或其他方法可以避免这种行为?
在我的应用中关闭之前的活动不会有问题,不会丢失任何用户输入。
我在 onStop() 中尝试了使用 finish() 的解决方法,但是当调用子活动 (startActivityForResult) 时也会调用 onStop,因此从那里返回什么都没有 - 应用程序将被关闭。

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    我也遇到了这个问题,并通过在我的每个活动声明中使用 android:launchMode="singleInstance" 来解决它。

    【讨论】:

      【解决方案2】:

      在包含“特殊视图”的活动清单中尝试android:clearTaskOnLaunch="true"

      【讨论】:

      • 很遗憾,这不起作用。我什至尝试使用不同的“taskAffinity”、finishOnTaskLaunch、allowTaskReparenting、FLAG_ACTIVITY_CLEAR_TOP 和 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED。 (FLAG_ACTIVITY_NEW_TASK 无论如何都会设置,因为应用程序可能没有运行。)
      【解决方案3】:

      使用 FLAG_ACTIVITY_NEW_TASK 调用意图并在主要活动上添加:

      android:launchMode="singleTask" android:clearTaskOnLaunch="true"

      在其他地方添加:

      android:finishOnTaskLaunch="true"
      

      这样,在后台返回应用程序时,它会终止任何活动。

      【讨论】:

        猜你喜欢
        • 2012-05-03
        • 1970-01-01
        • 2012-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-23
        • 1970-01-01
        相关资源
        最近更新 更多