프로그램

android back key 에서 super 의 사용.

(주)CKBcorp., 2012. 1. 26. 09:40
반응형

아래와 같은 코드가 있다 치자.

public boolean onKeyUp(int keyCode, KeyEvent event){
switch(keyCode){
case KeyEvent.KEYCODE_BACK:
       System.exit(0);
};
return super.onKeyUp(keyCode, event);
}


코드를 보면, back key 를 눌렀을 때 종료되는 프로그램 처럼 보인다.
과연 종료가 제대로 될까?

결론부터 말하면, 알 수 없다.
이거 쓰레드 집어넣다가 우연히 알게된 건데,
Android에서 back 키는, 현재 Activity 를 background process로 돌리는 역할을 하는 값이다. 프로그램을 종료하는 기능은 없다. 그러므로, 이 함수의 경우, System.exit(0) 가 foreground process 에서 실행되는지, background process 실행되는지는 며느리도 알 수 없고, 보장할 수도 없다. ( 디버그 찍어보면 background process 에서 실행되는 것 같기는 하다.)

코드에서 하려는 것은 프로그램을 종료시켜 버리려는 것이므로, 저 경우에는 코드를 아래와 같이 수정하는 것이 낫다.

public boolean onKeyUp(int keyCode, KeyEvent event){
switch(keyCode){
case KeyEvent.KEYCODE_BACK:
        System.exit(0);
        return true; 
};
return super.onKeyUp(keyCode, event);
}


즉, back key 가 눌리었을 때에는, super를 실행하지 않음으로 해서 back key 의 background 이동 기능을 막은 후, 종료하는 거다. 



 

반응형