public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
keepSession();
}
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
if(msg.what==0){
keepSession();
}
}
};
public void keepSession(){
BackThreadKeepSession proc = new BackThreadKeepSession();
//proc.setDaemon(true);
proc.start();
}
class BackThreadKeepSession extends Thread{
public void run(){
try{
Thread.sleep(10*1000);
//.....여기서 작업하는 코드가 있습니다.
Log.d(logTag,"[H : "+keepSessionMinute+"]-Keep Session : "+new java.util.Date().toString());
}catch(Exception e){
}
mHandler.sendEmptyMessage(0);
}
}
위 처럼 사용했는데요 지연시간을 우선 확인코다 10초로 주었구요
Main UI Activity가 종료 되었음에도
나는 살아있다 ~~~~~하면서 서브 쓰레드가 Log를 보내고있습니다. 이론 ㅠ,ㅠ.
원래는 Main에 Flag값으로 while(flag)로 실행하다가 onDestory에서 Flag를 false로 변환처리했는데
onDestory가 안불려질수도 있는 상황이 있으니깐 Handler를 재귀로 콜하게 했는데 이런..
서브 Thread가 왜 살아있을까요?



