Как сохранить / восстановить глобальные переменные в android, даже если приложение os kill

В андроиде Google рекомендует сохранять глобальные переменные в приложении. Но есть проблема, если андроид os убил приложение из-за низкой памяти, приложение будет повторно создано, и глобальные переменные, которые я сохранил, будут потеряны.

Я не знаю, когда сохранять / восстанавливать эти переменные, приложение не дает нам некоторых методов, таких как onsaveinstancestate () / onrestoreinstancestate ().

У меня есть одна идея, но я не могу убедиться, что она может работать хорошо. Я вижу, что какое-то приложение отправится на slashScreen, когда os его убьет, может быть, мы сможем сохранить эти переменные gloabl в SplashAvtivity? Поскольку у Activity есть методы onsaveinstancestate () / onrestoreinstancestate (), сначала запускается splashActivity приложения и не заканчивается, когда мы обнаруживаем, что os убивает приложение, мы можем перейти к SplashActivity (завершить все действия над ним в задаче) снова, затем onrestoreinstancestate ().

Есть ли другой хороший способ сохранить / повторить глобальные переменные? Конечно, я думаю, что если Google может предложить нам такой метод, как onsaveinstancestate () / onrestoreinstancestate () в приложении, это будет лучше.

    Если переменная должна сохраняться между выполнением, вам необходимо выполнить некоторую жесткость диска. Самый простой способ, предложенный Рагхунанданом, заключается в использовании общих настроек.

    Для этого сначала запросите общие настройки:

    SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); editor.putString("key_name", "key_value"); editor.commit(); //important, otherwise it wouldn't save. 

    Вы можете сделать это, например, в onStop или onPause активности (onPause всегда вызывается, но нет гарантии, что onStop будет вызван до Honeycomb).

    В вашем onCreate (или когда вам нужно значение) вы читаете из SharedPreferences и проверяете, установлено ли значение, иначе используйте значение по умолчанию:

     SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0); String myVariable = prefs.getString("key_name", "default_value"); 

    Теперь вы можете использовать myVariable с сохраненным значением или начальным значением (по умолчанию), если ранее ничего не было сохранено.

    Дополнительные сведения см. На странице https://developer.android.com/guide/topics/data/data-storage.html#pref.

    Чтобы уточнить, PREFS_NAME – это имя вашего файла общих настроек. Как правило, добавьте имя пакета для своего приложения, это хорошая практика.

    Intereting Posts
    Не выходите из строя градиента, если тест терпит неудачу с помощью плагина gradle-android-test-plugin Пользовательское имя обфускации в proguard GetErrorDialog обесценивается. Что такое обновленная функция и как я могу ее использовать? Реализовать Google-Play-Music как анимацию (спектр 3 бара рядом с элементом списка воспроизведения) Можем ли мы установить APK из ContentProvider? Spinner не работает в android Volley – не может решить конструктор "JSONObjectRequest Пример использования вкладок Android с представлениями вместо действий? Android SDK 22 – проблемы с поиском SearchView Как распечатать возвращаемое сообщение из HttpResponse? Как рисовать частичную битовую дугу? Как круговое колесо хода, но с растровым изображением, которое становится все более и более отображаемым. Уведомление в Android возвращается к неправильному действию Внедрение справочной системы Как определить возможности гарнитуры Реагирование на BLE-направленную рекламу (ADV_DIRECT_IND) на Android