Как остановить изменение ориентации экрана из состояния сброса в моем приложении

Когда моя тема начинается, я устанавливаю AtomicBoolean к истине. В конце я сбрасываю его в false в связанном обработчике.

Когда я меняю ориентацию экрана ДО конца потока:

  • onSaveInstanceState() печатает, что это bool TRUE
  • onPause() также печатает TRUE. -> Логический

Нить заканчивается, я снова меняю ориентацию:

  • Мой Log.e "Bool" печатает ЛОЖЬ -> ОК
  • onSaveInstanceState() печатает ИСТИНА -> Проблема
  • onPause() печатает ИСТИНА -> Проблема
  • onCreate() печатает ИСТИНА -> Проблема

OnCreate():

if (savedInstanceState != null) {
    boolLocThread.set(savedInstanceState.getBoolean("boolLocThread"));
    Log.i("APP", "load LOC: " + boolLocThread.get());
    if (boolLocThread.get()) {
       Log.i("APP", "show progressDialog again");
       progressDialog = ProgressDialog.show(App.this, "", "Loading...", true);              
    }
}

Обработчик:

Handler handlerLoc = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        Log.i("APP", "Handler received (LOC)");
        Log.i("APP", "Suppress progressDialog (LOC)");
        progressDialog.dismiss();
        boolLocThread.set(false);
        Log.e("APP", "Bool: " + String.valueOf(boolLocThread.get()));

    }
};

OnSaveInstanceState:

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean("boolLocThread", boolLocThread.get());
    Log.i("APP", "save LOC: " + boolLocThread.get());           
}

В методе OnStop я устанавливаю для моего логического значения значение false, а в методе OnPause я отклоняю свой progressDialog, если он существует. Если я не поворачиваю экран до конца, bool сбрасывается в FALSE, и проблем нет. Как я мог правильно сбросить мой логический? Спасибо

0 ответов

Другие вопросы по тегам