Как вы сохраняете состояние своей активности при выходе? Андроид

У меня есть базовое приложение с вводом текста, вводом счетчика и вводом второго счетчика, массив которого зависит от настройки, измененной в меню «Параметры».

В настоящее время, когда я нажимаю «Домой» или «Ввод» в своем приложении, я либо возвращаюсь на рабочий стол, либо возвращаюсь к старым вводам, которые я недавно вводил.

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

Я немного новичок в Java, поэтому прошу прощения, если это простая проблема.


person Sean    schedule 22.02.2010    source источник


Ответы (2)


В вашей деятельности переопределите onSaveInstanceState и onRestoreInstanceState. Эти методы позволят вам сохранять данные в Bundle. Вы также можете сохранить данные в Настройки. Во всех своих приложениях я переопределяю как onSaveInstanceState, так и onRestoreInstanceState для сохранения и загрузки значений в Bundle. Я также сохраняю данные в настройках в onPause и загружаю настройки в onResume. Также в onCreate(Bundle saveInstanceState) я делаю такую ​​проверку

    if(savedInstanceState != null)
    {
        m_mainView.restoreInstanceState(savedInstanceState);
    }
    else
    {
        m_mainView.loadGameFromDatabase(getPreferences(MODE_PRIVATE));
    }

Эти практики всегда работали для меня.

person snctln    schedule 22.02.2010
comment
Можете ли вы предоставить мне один образец примера? - person Android_programmer_camera; 12.10.2010
comment
onSaveInstanceState не вызывается, когда пользователь явно открывает приложение, нажимая кнопку «Назад» или «Домой». Это можно использовать только тогда, когда ОС решит уничтожить вашу активность без вашего вмешательства. - person Ε Г И І И О; 08.07.2014

Вам придется использовать переопределенный метод onPause в своей деятельности и где-то сохранять свои данные (возможно, общие настройки). Затем onResume вы должны прочитать их из постоянного хранилища и заполнить свои элементы управления.

onSaveInstanceState и restoreInstanceState не ваш друг, когда вы хотите обрабатывать нажатия кнопок «назад» или «домой».

person Ε Г И І И О    schedule 08.07.2014
comment
У меня тоже с этим беда. Я думаю, что эти ответы великолепны, но их можно сузить с помощью некоторых примеров и более точной информации. В моем примере мое приложение является только портретным, поэтому мне не нужно беспокоиться о сохранении для этого, но по возвращении домой даже кнопка «Назад» убивает данные текстового просмотра пользователей, что является мусором для пользователя. Мне еще предстоит найти информацию, описывающую, что делать за пределами поворота экрана... - person RobbB; 05.11.2020