【问题标题】:Clear the activity stack before launching activity with intent在有意图地启动活动之前清除活动堆栈
【发布时间】:2011-12-14 14:20:37
【问题描述】:

我正在为 Android 应用程序处理 C2DM 通知,我想在用户单击通知时打开我的应用程序。没有问题,这很容易。 问题是,当应用程序启动时(点击通知后),如果之前打开了一些活动,启动的活动似乎被添加到实际的活动堆栈中,关于我的应用程序的复杂性有什么问题(有是很多活动,有些是静态字段)。

要解决这个问题,2个解决方案就可以了:

1) 不要调用特定的活动,而只是要求我的应用程序打开(例如当我单击主屏幕上的应用程序图标时:如果应用程序已关闭,则打开第一个活动,或者只是将应用程序置于最前面如果已打开(但在后台))。

2) 清除所有活动堆栈并启动特定活动。

但我没有成功完成这两种解决方案之一。即使使用意图标志(如http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP)。

谁能帮我解决这个问题?

谢谢

PS:对不起我的英语不好,我来自比利时:-)

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    这不是您要求做的,但您可以将属性 android:launchMode="singleTask" 添加到您将从该通知中调用的活动中,如果此实例已经存在,它不会创建新活动。

    您也可以使用 ActivityManager.killBackgroundProcesses(String packageName) 删除后台进程,但我从未尝试过,不建议这样做,或者使用 ChriZzZ 建议并更严格地管理您的活动。

    【讨论】:

    • android:launchMode="singleTask" 似乎解决了我的问题。非常感谢
    【解决方案2】:

    听起来你在搜索FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

    如果设置,这将标记任务活动堆栈中的一个点,当任务重置时应该清除该点。也就是说,下次任务以 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 被带到前台时(通常是由于用户从家里重新启动它)

    【讨论】:

      猜你喜欢
      • 2011-12-09
      • 1970-01-01
      • 2023-01-04
      • 2011-09-19
      • 2015-05-13
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多