Activity中的getIntent()。removeExtra()不适用于android:launchmode =“singleTask”?

时间:2011-09-17 08:48:25

标签: android android-activity android-intent relaunch

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

此活动的启动模式为android:launchmode="singleTask"

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

只要用户来自最近的项目,这就会继续(好的,可能是最近的启动应用程序使用了相同的意图,其中设置了额外的“relaunchstatus”)。

所以我尝试通过在活动完成之前处理BACK_KEY来删除这个额外的东西,使用getIntent()。removeExtra(“relaunchstatus”),仍然这个额外存在于最近项目的新启动中。

但是,如果我从启动器菜单图标启动应用程序,情况并非如此。

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

2 个答案:

答案 0 :(得分:2)

如果启动模式为singleTask且活动已存在而不是onCreate(),则会调用onNewIntent(..)

因此,您需要覆盖onNewIntent(..)并检查Intent那里。

答案 1 :(得分:0)

这是不能改变的,事实上Dianne Hackborn在帖子中没有Intent存在: Android Google Groups