안녕하세요.
게임을 하던 중에 화면을 끄게되면 onStop()에서 멈출 줄 알았는데 바로 onDestroy()로 넘어가더라고요...
화면을 껐다가 켜도 계속할 수 있어야 하는데
다시 화면을 키면 애러가 나면서 꺼지게 됩니다.
어떻게 해결해야 하나요..?? 감사합니다
public class StartGame extends Activity {
ButtonEventC be;
ProgressBarC pc;
private static String String_key = "scotext";
int time = 0;
int score = 0;
boolean start = false;
ImageButton leftBtn[] = new ImageButton[3];
ImageButton rightBtn[] = new ImageButton[3];
TextView sco;
ImageButton pause;
Dialog dialog;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_game);
Log.i("onCreat", "It's onCreat");
init();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
sco = (TextView) findViewById(R.id.scoreText);
if (savedInstanceState != null) {
Bundle map = savedInstanceState.getBundle(String_key);
if (map != null) {
sco.setText(map.getString("String_text"));
pc.progress.setProgress(map.getInt("Time"));
}
}
new Thread(new Runnable() {
@Override
public void run() {
try {
handler.sendEmptyMessage(3);
Thread.sleep(1000);
dialog.cancel();
handler.sendEmptyMessage(2);
Thread.sleep(1000);
dialog.cancel();
handler.sendEmptyMessage(1);
Thread.sleep(1000);
dialog.cancel();
} catch (InterruptedException e) {
android.util.Log.e("ErrorTag", "", e);
}
}
}).start();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
be.nextMission();
pc.start();
}
}, 3000);
pause = (ImageButton)findViewById(R.id.pauseb);
pause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pc.isRun = false;
pause.setImageResource(R.drawable.stopbp);
final Dialog dialog = new Dialog(StartGame.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.pause_dialog);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
ImageButton restart = (ImageButton) dialog.findViewById(R.id.restart);
restart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pc.isRun = true;
pause.setImageResource(R.drawable.pauseb);
dialog.cancel();
}
});
ImageButton stop = (ImageButton) dialog.findViewById(R.id.stopgame);
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pc.is = false;
dialog.cancel();
finish();
}
});
dialog.show();
}
});
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBundle(String_key, saveState());
}
public Bundle saveState() {
Bundle map = new Bundle();
map.putString("String_text", String.valueOf(sco.getText()));
pc.isRun = false;
map.putInt("Time", pc.getTime());
return map;
}
protected Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
dialog = new Dialog(StartGame.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.countdown);
ImageView iv;
iv = (ImageView) dialog.findViewById(R.id.countDownIv);
iv.setImageResource(R.drawable.threee);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
super.handleMessage(msg);
switch (msg.what) {
case 3:
iv = (ImageView) dialog.findViewById(R.id.countDownIv);
iv.setImageResource(R.drawable.threee);
dialog.show();
break;
case 2:
iv = (ImageView) dialog.findViewById(R.id.countDownIv);
iv.setImageResource(R.drawable.twoo);
dialog.show();
break;
case 1:
iv = (ImageView) dialog.findViewById(R.id.countDownIv);
iv.setImageResource(R.drawable.onee);
dialog.show();
break;
}
}
};
private void init() {
be = new ButtonEventC(this);
pc = new ProgressBarC(this);
leftBtn[0] = (ImageButton) findViewById(R.id.ImageButton1);
leftBtn[1] = (ImageButton) findViewById(R.id.ImageButton2);
leftBtn[2] = (ImageButton) findViewById(R.id.ImageButton3);
rightBtn[0] = (ImageButton) findViewById(R.id.ImageButton4);
rightBtn[1] = (ImageButton) findViewById(R.id.ImageButton5);
rightBtn[2] = (ImageButton) findViewById(R.id.ImageButton6);
sco = (TextView)findViewById(R.id.scoreText);
Typeface myNewFace = Typeface.createFromAsset(getAssets(), "Station.ttf");
sco.setTypeface(myNewFace);
for (int i = 0; i < 3; i++) {
leftBtn[i].setOnClickListener(be);
rightBtn[i].setOnClickListener(be);
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onPause() {
super.onPause();
time = pc.getTime();
pc.isRun = false;
start = true;
if (dialog != null) {
if (dialog.isShowing()) {
dialog.dismiss();
}
}
Log.i("onPause", "It's onPause");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("onRestart", "It's onRestart");
pc.isRun = true;
be.score.setText(String.valueOf(score));
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i("onResume", "It's onResume");
if(start){
pc.isRun = false;
pause.setImageResource(R.drawable.stopbp);
final Dialog dialog = new Dialog(StartGame.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.pause_dialog);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
ImageButton restart = (ImageButton) dialog.findViewById(R.id.restart);
restart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pc.isRun = true;
pause.setImageResource(R.drawable.pauseb);
dialog.cancel();
}
});
ImageButton stop = (ImageButton) dialog.findViewById(R.id.stopgame);
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pc.is = false;
dialog.cancel();
finish();
}
});
dialog.show();
}
}
@Override
protected void onStop() {
super.onStop();
Log.i("onStop", "It's onStop");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i("onDestroy", "It's onDestroy");
}
}