Как остановить изменение ориентации экрана из состояния сброса в моем приложении
Когда моя тема начинается, я устанавливаю 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, и проблем нет. Как я мог правильно сбросить мой логический? Спасибо