我正在重新启动我的 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/