2015-04-24 5 views
0

Вот структура моего приложения.Как предотвратить перезапуск от изменения ориентации?

MainActivity.java calls FragmentActivity.java, 
FragmentActivity.java calls GameView.java 
GameView.java calls Thread.java. 

В принципе, вся игровая логика будет обрабатываться GameView и его нитью. Я не знаю, как предотвратить перезапуск игры при изменении ориентации.

Если я остановил поток и возобновить его, сбой приложения, а также я не могу использовать метод onSaveInstanceState в Gameview.java

Любая помощь?

+0

вы не должны этого делать, это не рекомендуется. Если вы объявите в манифесте 'android: configChanges =" orientation | keyboardHidden | screenSize "', вы достигнете этого – Blackbelt

ответ

1

Это возможно в манифесте Android. Просто добавьте в декларации деятельности, в которой вы хотите отключить перезапутить следующий атрибут:

android:configChanges="orientation|screenSize" 

Затем вы можете перезаписать в вашей деятельности, и вы получите обратный вызов, какое событие только что произошло. В вашем случае изменение ориентации. И при таком подходе активность не перезапускается, когда меняется ваша ориентация.

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 
0

Вы ищете onResume() и on pause() ... Вы храните значения в пакет в паузе и создаете эти значения в методе возобновления и показываете диалог, поскольку это происходит, чтобы пользователь не заметил очевидного ,

0

Вы можете получить контроль над тем, что происходит при изменении ориентации, определив класс Application в файле манифеста и переопределив общедоступный метод onConfigurationChanged().

Базовый класс для тех, кому необходимо поддерживать состояние глобального приложения. . Вы можете предоставить свою собственную реализацию, указав ее имя в своем теге Android121.jpg, который приведет к созданию класса , когда будет создан процесс для вашего приложения или пакета .

Вам просто нужно проверить наличие newConfig == Configuration.ORIENTATION_LANDSCAPE и т. Д. На этом этапе вы можете перезагрузить ресурсы, чтобы заставить все работать.

Смежные вопросы