지도 뷰에서 API를 끌어 와서 차량 lat-lnt를 업데이트해야하는 프로젝트가 있습니다. 그리고 updateThread가 앱이 onStop 또는 onPause를 할 때 잠을 자고, OnResume을 할 때 일어나십시오. 또한 앱 라이프 사이클에서 절대 죽지 않습니다. 처음, 난 그냥 아래 사용하려고 (솔루션은 1) updateing합니다 :안드로이드 업데이트 스레드를 제어하는 방법 앱 생활에서 깨어 난다
new Thread(new Runnable() {
@Override
public void run() {
while(true){
//update-Vehicle-Looping
}
}
}).start();
그러나 테스트 기간 동안, 내가 스레드가 자동으로 응용 프로그램은 그러나, 이동 중지 또는 onPause에 갈 때 사망하지 않는 것을 발견, 보장은 없습니다 그것은 죽지 않을 것입니다, 안드로이드는 쓰레드가 사용하고있는 리소스가 필요할 때까지 계속 실행합니다. 이것은 큰 리소스 비용을 들이지는 않을 것입니다.
그래서 대체 (Solution2) 윅 (whick)을 사용하여 스레드를 제어 할 수 있습니다.
HandlerThread thread = new HandlerThread("MyHandlerThread");
thread.start();
mHandler = new Handler(thread.getLooper());
mHandler.post(UpdateRunable);
Runable UpdateRunable=new Runnable() {
@Override
public void run() {
while(IsRun){
//update-Vehicle-Looping
}
}
};
사용 IsRun는 응용 프로그램 리프트 사이클의 업데이트 스레드 awaker 또는 잠을 제어, 어떤 의미에서 (솔루션 2) 개선 (솔루션 1). 스레드에 의한 위험을 피할 수는 없습니다.
앱 라이프 사이클에서 업데이트 스레드를 제어 할 수있는 제안이 있습니까?
'서비스'를 사용하십시오. – earthw0rmjim