我将重新启动HomeActivity,并在Intent中设置一个额外的“ relaunchstatus”。在Activity的onCreate()方法中,我检查此值(如果存在),显示一些警报。
此活动的启动模式为android:launchmode="singleTask"
。
在用户看到此警报并关闭警报,然后通过按“后退”按钮再次关闭活动之后,就会出现此问题。现在,如果他通过长按“主页”按钮从“最近使用的应用程序”列表中启动该应用程序,则将使用具有额外“重新启动状态”的相同意图,并再次发出警报。
只要用户来自最近的项目(只要是最近启动的应用程序使用的意图与在其中设置了额外的“重新启动状态”的意图相同),就可以继续保持这种状态。
因此,我尝试通过使用getIntent()。removeExtra(“ relaunchstatus”)在活动完成之前处理BACK_KEY来删除此多余项,但此多余项仍然存在于“最新”项的新启动中。
但是,如果我从启动器菜单图标启动应用程序,则不是这种情况。
更新:所以我想Activity的getIntent()将为您提供启动它的Intent的副本,因此它不像是对永久更改的同一对象的引用。如果是这种情况,那么我们将需要从当前设备的GUI(例如HTC Sense等)中进行操作,该设备的最新项已绑定到该意图,这可能不可能吗?
最佳答案
如果启动模式为singleTask
,并且已有活动(而不是onCreate()
),则将调用onNewIntent(..)
。
因此,您需要覆盖onNewIntent(..)
并在此处检查Intent
。