Почему автомобильная док-станция портит мое приложение? - PullRequest
2 голосов
/ 10 сентября 2010

С обновлением Android 2.2 появилось новое приложение для автомобильной док-станции. Если мое приложение находится на переднем плане, когда я подключаю свой телефон к телефону, мое приложение убивается или приостанавливается или что-то в этом роде, и когда я пытаюсь открыть свое приложение заново, оно все портится. Он потерял информацию о своем состоянии.

Кто-нибудь знает, что делает приложение автомобильной док-станции? По крайней мере, кажется, что это принудительное уничтожение всех запущенных приложений или какое-либо другое разрушительное поведение.

Думаю, как только мы определим, что он делает, я смогу заняться кодированием.

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

Переход в автомобильную док-станцию ​​- это изменение конфигурации (например, приложения могут, если захотят, представить специфичный для автомобиля пользовательский интерфейс).Это означает, что ваша деятельность будет проходить через нормальный процесс уничтожения и последующего воссоздания.

Если вы злоупотребляете android: configChanges, чтобы вам не приходилось сталкиваться с этим, то ответ - НЕ делать этого.Как мы всегда говорили, это для определенных конкретных случаев, когда вы хотите эту оптимизацию.Это не оправдание, чтобы избежать изменения конфигурации.Если ваше приложение неправильно справляется с изменениями конфигурации, всегда будет иметь различные способы его поломки.Новая функция автомобильной док-станции только делает это немного более очевидным.

На самом деле я очень рекомендую разработчикам , а не использовать android: configChanges.Поддержание нормального поведения - это очень хороший способ проверить эту часть вашего приложения, чтобы убедиться, что вы делаете это правильно, и будет вести себя правильно, когда это произойдет с вами по другим причинам (потому что это, безусловно, будет).Отключение изменений конфигурации для переключателя ориентации усложняет тестирование этой части вашего приложения.За исключением очень необычных ситуаций, вам действительно следует сохранять нормальное поведение и заставить его работать правильно.

1 голос
/ 10 сентября 2010

Все приложения теряют свое состояние, когда их убивают. Фактически они теряют свою информацию при изменении ориентации, если только вы не сохраните ее специально (например, в onSaveInstanceState).

Если вы хотите, чтобы ваша информация была настолько постоянной, чтобы она могла выдержать переключение приложения (или сброс системы), вы можете сохранить свое состояние в SharedPreferences вместо пакета, который вы получаете в onSaveInstanceState.

Как вы сейчас сохраняете свое состояние? Ты вообще так делаешь?

Кстати, вы также можете добавить широковещательный приемник для прослушивания ACTION_DOCK_EVENT и проверить состояние для EXTRA_DOCK_STATE_CAR и сохранить данные своего экземпляра на случай, если вам не нравится общая идея SharedPreferences.

...