Я не знаю, правильное ли название, вот что происходит.
У меня есть приложение, которое работает по-разному на телефоне и на планшете, на телефоне он отображается как портрет на планшете, который он показывает как пейзаж.
Для этого я создал класс CoreActivity, который расширяется всеми моими действиями и делает следующее:
public class CoreActivity extends Activity {
protected boolean _landscape = false;
public boolean isPhone() {
int layoutSize = getScreenLayoutSize();
return (layoutSize == Configuration.SCREENLAYOUT_SIZE_SMALL || layoutSize == Configuration.SCREENLAYOUT_SIZE_NORMAL);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isPhone() && !_landscape) {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
protected int getScreenLayoutSize() {
return (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK);
}
}
Моя проблема возникает, когда я хочу показать экран настройки телефона в альбомном режиме, для этого я использую следующее:
@Override
protected void onCreate(Bundle savedInstanceState) {
_landscape = true
super.onCreate(savedInstanceState);
}
Проблема в том, что на телефоне, если пользователь держит телефон в портретном режиме (как это было бы, так как большая часть приложения находится в портретном режиме), тогда действие создается и уничтожается, а затем воссоздается. Но если они удерживают его в ландшафтном режиме, то он создается только один раз.
Моя проблема возникает, потому что в методе onCreate я запускаю потоки, которые загружают данные, а также показываю фрагменты.
Есть ли способ избежать этой проблемы? есть ли способ запустить действие с самого начала в портретном режиме, а не изменять его или создать его дважды?
Заранее благодарим за любую помощь, которую вы можете предоставить