假设我们有活动A,B。A启动B并传递Intent Extra“id”。现在奇怪的事情似乎只发生在某些行为上。
启动应用
来电B传递额外:id 1
在B中按主页按钮。
找到应用程序图标并单击它。
A来电B但这次我传入Extra:id 2
现在在B中,当它打印出id时它即为1,即使我指定了id 2。
从进一步的分析来看,它似乎没有得到新的Intent,它似乎是使用旧的Intent,而第二次似乎没有调用onCreate它直接进入onRestart。所以我的问题是,有没有办法让onRestart获得正确的Intent Extras?它似乎抓住了旧的保存额外内容。
如果难以理解,我很抱歉,我会看看我是否可以将一个小样本应用放在一起,以证明这一点。
编辑看来这个场景是不正常的,这是因为我的AndroidManifest.xml中我的活动属性为android:launchMode =“singleInstance”一旦我删除了它就开始行动了如Rich所述。
答案 0 :(得分:1)
按Home键时,B仍处于活动状态。因此,下次您按下应用程序的图标时,它所做的只是恢复活动B.它不会像第一次那样启动A并重定向到B.
您最好的选择是将您的状态保存在持久存储(SharedPreferences,Sqlite,文件等)中,这样您就不会依赖传递的Intent附加功能。您已经可以看到,这对于依赖的方法来说太笨拙了。
快速而肮脏的方法是在用户离开时杀死活动B(从而确保下次按下图标时它首先加载活动A)。这是执行此操作的代码,但我绝对建议如上所述正确保存状态,而不是像这样的解决方案。
@Override
public void onPause()
{
super.onPause();
finish();
}