android - Activity 中的 getIntent().removeExtra() 不适用于 android :launchmode ="singleTask"?

标签 android android-activity android-intent relaunch

我正在重新启动我的 HomeActivity 并在 Intent 中设置一个额外的“relaunchstatus”。在 Activity 的 onCreate() 方法中,我检查此值,如果存在,则显示一些警报。

此 Activity 的启动模式是 android:launchmode="singleTask"

问题出现在用户看到此警报并关闭它并通过按“返回”按钮再次关闭 Activity 之后。现在,如果他通过长按“主页”按钮从最近的应用程序列表中启动它,则会使用其中具有额外“重新启动状态”的相同 Intent ,并再次出现警报。

只要用户来自最近的项目,它就会一直存在(好吧,可能是最近启动的应用程序使用了相同的 Intent ,其中设置了额外的“relaunchstatus”)。

因此,我尝试通过使用 getIntent().removeExtra("relaunchstatus") 在 Activity 自行完成之前处理 BACK_KEY 键来删除这个额外内容,但这个额外内容仍然存在于最近项目的新启动中。

但是,如果我从启动器菜单图标启动应用程序,情况就不是这样了。

更新:所以我想 Activity 的 getIntent() 会给你一个启动它的 Intent 的副本,所以它不像对同一对象的引用,在该对象上的更改将是永久性的。如果是这种情况,那么我们将需要从当前设备 GUI(如 HTC Sense 等)执行此操作,其最近的项目绑定(bind)到that intent,这可能是不可能的?

最佳答案

如果启动模式是 singleTask并且 Activity 已经存在而不是 onCreate()onNewIntent(..)将被调用。

所以你需要覆盖onNewIntent(..)并在那里检查 Intent

关于android - Activity 中的 getIntent().removeExtra() 不适用于 android :launchmode ="singleTask"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7453608/

相关文章:

android - 如何使用矩阵控制 IMAGEVIEW 的拖动

android - 新实例失败 : no <init>

Android - 如何在不删除快捷方式的情况下更改应用程序的入口点?

android - 在另一个应用程序中捕获文本选择

android - 启用 setTextFilterEnabled 时如何在 ListView 中获得正确的位置?

android - 最大化像素 - Android 浏览器地址栏

Android:从第二个 Activity 切换回第一个 Activity 同时退出

android - 如何从 Android Activity 访问 SyncResult

java - 在不打开日历的情况下添加日历事件

android - 将 Intent 传递给我的 fragment