Я разрабатываю игру на основе этого учебника .Мне удалось заставить большую часть игры работать, но когда пользователь нажимает кнопку «Домой», моя игра продолжает работать в фоновом режиме, и я могу приостановить ее, используя метод onPause, и все, но он никогда не запускает метод onResume.
Когда пользователь перезапускает игру, ни один из методов не вызывается, и моя панель теряет фокус.
Как я могу заставить его снова получить фокус, после того, как игра была отправлена в фоновый режим после нажатия кнопки «Домой»?
Код моей активности:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
panel = new Panel(this);
// requesting to turn the title OFF
requestWindowFeature(Window.FEATURE_NO_TITLE);
// making it full screen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
// set our MainGamePanel as the View
setContentView(panel);
Log.d(TAG, "onCreate");
}
@Override
public void onStart(){
super.onStart();
Log.d(TAG,"onStart");
}
@Override
public void onRestart(){
super.onRestart();
Log.d(TAG,"onRestart");
}
@Override
public void onResume(){
super.onResume();
Log.d(TAG, "onResume");
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Log.d(TAG, "onSaveInstance");
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.d(TAG, "onRestoreInstance");
}
@Override
public void onPause(){
super.onPause();
Log.d(TAG,"onpause");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "onStop..");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy...");
}
МойКонструктор панели:
WhackEmPanel(Context c) {
super(c);
this.context=c;
loadAnimations();
setCharacters();
getHolder().addCallback(this);
backGround = BitmapFactory.decodeResource(getResources(), R.drawable.background);
// create the game loop thread
thread = new MainThread(getHolder(),this);
setFocusable(true);
//Generate Random Numbers for characters
Picker = RandomPicker.RandomPick(8,500); //From 0 to 8, gives me 500 random integers
picked=Picker.remove(0);
}
Я новичок в этом игровом программировании, но, насколько я понял, мне нужно снова вызвать setFocusable (true), но где?
РЕДАКТИРОВАТЬ: послеПо предложению DizzyThermal я удалил метод pause, оставив только журнал, и я не понимаю, почему он никогда не достигает метода onResume ()!