我正在重新启动我的HomeActivity并在Intent中设置额外的“relaunchstatus”。在Activity的onCreate()方法中,我检查这个值,如果存在,则显示一些警告。
此活动的启动模式为android:launchmode="singleTask"
。
问题出现在用户看到此警报并关闭它并按“返回”按钮再次关闭活动之后。现在,如果他通过长按“主页”按钮从最近的应用程序列表中启动它,那么使用相同的意图,其中包含额外的“重新启动状态”,并再次发出警报。
只要用户来自最近的项目,这就会继续(好的,可能是最近的启动应用程序使用了相同的意图,其中设置了额外的“relaunchstatus”)。
所以我尝试通过在活动完成之前处理BACK_KEY来删除这个额外的东西,使用getIntent()。removeExtra(“relaunchstatus”),仍然这个额外存在于最近项目的新启动中。
但是,如果我从启动器菜单图标启动应用程序,情况并非如此。
更新:所以我猜Activity的getIntent()会给你一个启动它的Intent的副本,因此它不像对同一个对象的引用,对象上的更改将是永久性的。如果是这种情况,那么我们需要从当前的设备GUI(如HTC Sense等)进行,其最近的项目绑定到那个意图,这可能是不可能的?
答案 0 :(得分:2)
如果启动模式为singleTask
且活动已存在而不是onCreate()
,则会调用onNewIntent(..)
。
因此,您需要覆盖onNewIntent(..)
并检查Intent
那里。
答案 1 :(得分:0)
这是不能改变的,事实上Dianne Hackborn在帖子中没有Intent存在: Android Google Groups