Приложение Android убивают, когда оно долго остается в фоновом режиме - PullRequest
0 голосов
/ 21 декабря 2018

Мое приложение для Android убивается ОС Android, когда оно какое-то время остается в фоновом режиме. Поэтому, когда оно запускается обратно, это пустой экран, так как все данные были стерты в тот момент, когда ОС убила процесс. К сожалению, я 'не хранить никаких данных в SQLite или разделяемых предпочтениях.Что было бы лучшим способом показать компонент пользовательского интерфейса с данными даже после того, как приложение было убито (к сожалению, не удалось реализовать SQLite из-за конфиденциальных данных / согласно требованиям).

1, я наблюдал всякий раз, когдаэто происходит в базовом методе oncreate активности, который я получаю saveInstanceState в методе oncreate.Поэтому я просто вызываю метод запуска, и приложение работает, как и ожидалось.Но разве это идеальный способ реализации?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Если я правильно понял, вы должны быть совершенно правы с savedInstanceState относительно сохранения простого состояния и восстановления из него.

static final String STATE_SCORE = "playerScore";
static final String STATE_LEVEL = "playerLevel";
// ...


@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the user's current game state
    savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
    savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);

    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

Затем, когда приложение будет убито и перезапущено:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); // Always call the superclass first

    // Check whether we're recreating a previously destroyed instance
    if (savedInstanceState != null) {
        // Restore value of members from saved state
        mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
        mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
    } else {
        // Probably initialize members with default values for a new instance
    }
    // ...
}

Просто обратитесь к здесь для получения более подробной информации.

0 голосов
/ 21 декабря 2018

Скорее всего, истек срок действия сеанса на стороне сервера.

  • Выйдите из системы пользователя на onPause() и войдите снова на onResume().
  • или используйте service для поддержки сеанса на стороне сервера.
...