반응형
아래와 같은 코드가 있다 치자.
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 true;
};
return super.onKeyUp(keyCode, event);
}
즉, back key 가 눌리었을 때에는, super를 실행하지 않음으로 해서 back key 의 background 이동 기능을 막은 후, 종료하는 거다.
반응형
'프로그램' 카테고리의 다른 글
C# - Form 안의 Control 들의 영역, 위치 계산 + SystemInformation 클래스 (0) | 2012.02.02 |
---|---|
visual studio 에서 대소문자 바꾸기 단축키. (0) | 2012.01.31 |
getTag() 값은 String 으로만 변경 가능한 걸까? (0) | 2012.01.21 |
Android Back Key 이용법 2. (0) | 2012.01.19 |
Java 의 atoi() 함수. (2) | 2012.01.15 |