Поведение экрана блокировки Android - PullRequest
0 голосов
/ 27 декабря 2011

Если я нажму кнопку «Домой» и вернусь к своему приложению чуть позже, я обнаружу, что это состояние отлично сохранилось. Однако по какой-то причине, если я заблокирую телефон, а затем разблокирую его, мое приложение вернулось к исходной строке состояния, кое-что здесь и там. Когда я просмотрел журналы, то обнаружил, что onCreate вызывался, когда телефон был заблокирован. Поскольку блокировка телефона является довольно простой задачей, сброс настроек игры каждый раз, когда вы это делаете, нежелателен для пользователя. Как этого можно избежать, по крайней мере, в течение более длительного периода времени, чем несколько секунд после блокировки телефона?

Ответы [ 3 ]

2 голосов
/ 27 декабря 2011

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

@Override
public void onSaveInstanceState(Bundle outState){
    iGameContent.saveGame(outState);
}

Сохраните все необходимые данные в outState, а в методе onCreate проверьте, является ли он новым или сохраненным экземпляром, например:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game);

    if (savedInstanceState!=null){
        iGameContent.loadGame(savedInstanceState);
    }else{
        // Normal initialization
    }
}

Пример сохранения / загрузки в Bundle следующий:

public void loadGame(Bundle aBundle){
    iBadsHit = aBundle.getInt("iBadsHits",0);
}

public void saveGame(Bundle aBundle){
aBundle.putInt("iBadsHit", iBadsHit);
}
1 голос
/ 27 декабря 2011

Если ваш журнал показывает, что был вызван onCreate, это означает, что процесс ваших приложений был убит.

Знаете ли вы жизненный цикл Android Activity? Если нет, прочитайте об этом здесь: Действия Android

0 голосов
/ 17 ноября 2013

Поведение блокировки экрана может отличаться для разных устройств.Некоторые события могут привести к разрушению приложения.Вы можете попытаться обработать некоторые из этих событий, чтобы избежать этой ситуации, указав ее в файле AndroidManifest.xml:

android:configChanges="keyboardHidden|orientation"

Эти два являются наиболее проблемными при блокировке экрана.Вы можете найти больше информации о последней главе этого документа nvidia

...