Как предотвратить сброс настроек моего Android-приложения при каждом сне моего телефона? - PullRequest
0 голосов
/ 24 февраля 2012

Если мой телефон спит или я оставляю свое приложение, чтобы отправить текст / принять вызов, мое приложение перезапускается.Как мне предотвратить это?

Я хочу сохранить объекты, а не базовые типы данных.Мне не нужно сохранять текущее состояние / данные приложений, если приложение закрыто или телефон выключен, хотя я готов сделать это при необходимости.

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Вам нужно сохранить любые временные переменные состояния в вашей основной деятельности при вызове onSaveInstanceState(Bundle outState).Это вызывается всякий раз, когда ваше приложение может быть уничтожено ОС.В вашем onCreate(Bundle savedInstanceState), если savedInstanceState не равно NULL, это означает, что ваша деятельность была ранее прекращена, и вам необходимо повторно заполнить временные переменные состояния из этого пакета.

Вот почему ваша основная активность «перезапускается», потому что onCreate вызывается снова, когда ваша основная активность возобновляется после уничтожения, но не загружает данные из пакета, чтобы воссоздать состояние, когда приложениепауза.

Более подробно это описано здесь: http://developer.android.com/reference/android/app/Activity.html

0 голосов
/ 29 февраля 2012

Переопределите этот метод для сохранения вашего объекта.

@Override
public Object onRetainNonConfigurationInstance() 
{
  if (myObject != null) // Check that the object exists
      return(myObject);
  return super.onRetainNonConfigurationInstance();
}

Используйте этот код в методе onCreate () для перезагрузки вашего объекта.

if (getLastNonConfigurationInstance() != null)
    {
      table = (Table)getLastNonConfigurationInstance();

Это сохранит ваш объект, если ваши телефоныотключает ваше приложение, чтобы сохранить память или телефон спит.Нажатие назад / закрытие вашего объекта не сохранит его.Вы можете либо предложить пользователю нажать кнопку «Домой», либо снова нажать кнопку «Назад», чтобы выйти с помощью onBackPressed (), или использовать SQL для постоянного хранения данных в вашем объекте.

...