2

随着 Android 2.2 的更新,一个新的车载底座应用程序出现了。如果当我对接手机时我的应用程序在前台,我的应用程序被杀死或暂停或其他什么,当我尝试重新打开我的应用程序时,一切都搞砸了。它丢失了它的状态信息。

有人知道汽车码头应用程序在做什么吗?至少,它似乎是强制杀死所有正在运行的应用程序或其他一些破坏性行为。

我想一旦我们确定它在做什么,我就可以围绕它进行编码。

4

2 回答 2

2

进入汽车底座是一种配置更改(例如,如果应用程序愿意,它们可以呈现特定于汽车的 UI)。这意味着您的活动将经历其被销毁和稍后重新创建的正常过程。

如果您滥用 android:configChanges 不必处理这个问题,那么答案就是不要这样做。正如我们一直说的那样,这适用于您需要优化的某些特定情况。这不是避免处理配置更改的借口。如果您的应用程序无法正确处理配置更改,那么总会有各种方式破坏它。新的汽车码头功能只是让这一点更加明显。

事实上我非常建议开发者不要使用 android:configChanges。保持正常行为是测试应用程序这部分的一种非常好的方法,以确保您正确地执行它,并且当它由于其他原因发生在您身上时会正确地运行(因为它肯定会)。关闭方向开关的配置更改会使测试应用程序的这一部分变得更加困难。除了非常不寻常的情况外,您确实应该在这里保持正常行为并使其正常工作。

于 2010-09-10T01:41:13.670 回答
1

所有应用程序在被杀死时都会失去它们的状态。事实上,当您更改方向时,它们会丢失信息,除非您专门保存它(例如,在 onSaveInstanceState 中)。

如果您希望您的信息如此持久以至于它可以在应用程序切换(或系统重置)中幸存下来,您可以将您的状态保存在 SharedPreferences 中,而不是您在 onSaveInstanceState 中获得的包中。

您目前如何保存您的状态?你会这样做吗?

顺便说一句,您还可以添加一个广播接收器来监听 ACTION_DOCK_EVENT 并检查 EXTRA_DOCK_STATE_CAR 的状态并保存您的实例数据,以防您不喜欢一般的 SharedPreferences 想法。

于 2010-09-09T21:11:05.520 回答