随着Android 2.2更新推出了一款新的车载应用程序。如果我的应用程序位于前台,当我停靠手机时,我的应用程序被杀死或暂停或其他什么,当我尝试重新打开我的应用程序时,它都搞砸了。它失去了国家信息。
有人知道汽车底座应用程序在做什么吗?至少,它似乎是强制杀死所有正在运行的应用程序或其他一些破坏性行为。
我想一旦我们确定它在做什么,我就能够围绕它进行编码。
答案 0 :(得分:2)
进入汽车停靠站是一项配置更改(例如,如果需要,应用程序可以提供特定于汽车的UI)。这意味着您的活动将经历正常的销毁过程,并在以后重新创建。
如果你滥用android:configChanges而不必处理这个问题,那么答案是不要这样做。正如我们一直所说的那样,对于某些特定情况,您需要进行优化。这不是避免处理配置更改的借口。如果您的应用无法正确处理配置更改,则总是可以通过各种方式解决。新的车载功能只是让它变得更加明显。
事实上,我非常建议开发人员不使用android:configChanges。保持正常行为是一种非常好的方法来测试应用程序的这一部分,以确保您正确地执行此操作,并且当出现其他原因(因为它肯定会发生)时,它会正常运行。关闭方向开关的配置更改会使测试应用程序的这一部分变得更加困难。除了非常不寻常的情况,你真的应该保持这里的正常行为并使其正常工作。
答案 1 :(得分:1)
所有应用程序在被杀后都会失去状态。实际上,除非您专门保存它们(例如,在onSaveInstanceState中),否则在更改方向时它们会丢失信息。
如果您希望您的信息如此持久以至于它可以在应用程序切换(或系统重置)后继续存在,您可以将状态保存在SharedPreferences中,而不是保存在onSaveInstanceState中的包。
您目前如何保存您的州?你这样做了吗?
顺便说一句,你还可以添加一个广播接收器来监听ACTION_DOCK_EVENT并检查EXTRA_DOCK_STATE_CAR的状态并保存你的实例数据,以防你不喜欢一般的SharedPreferences想法。