游戏退出,安卓停止线程抛出异常

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// ȫ���ö�
prepare(0);
game = new Thread(thread);
thread = new GameThread();
game.start();
}
   @Override
protected void onRestart() {
super.onRestart();
ExitGame = false;
}
   @Override
protected void onPause() {
// thread.stop();
super.onPause();
}

@Override
protected void onDestroy() {
super.onDestroy();
// mOrientationListener.disable();

}

class GameThread implements Runnable {
Message msg;
boolean exitflag = false;

@Override
public void run() {// �[�򾀳�
while (!exitflag && !Thread.currentThread().isInterrupted()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
if (ExitGame) {
exitflag = true;
game.interrupt();
// Message msg = new Message();
// msg.obj = true;
// mHandler.sendMessage(msg);
} else {
contorlView.postInvalidate();
if (!gv.molisha.isGameExit()) {//是否绘制
gv.postInvalidate();
mHandler.sendEmptyMessage(0);//交给
}
}
}
}
}
  @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
// Toast.makeText("lyj_test","now_is_back_event",1).show();
ExitGame = true;
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
game = null;
// game.destroy();
// game.stop();
// game.exit = true; // 终止线程thread
// game.join();
finish();
return true;

}
return super.onKeyDown(keyCode, event);
}
// 2、重写onBackPressed方法
//
// Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下

@Override
public void onBackPressed() {
// 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
return;
}
}
最后我们看看壁纸解解乏http://www.gamersky.com/ent/201802/1015227_7.shtml
posted @ 2018-02-23 02:08  Faxcom  阅读(487)  评论(0编辑  收藏  举报