나는 onStartCommand
에서 다음을 가지고, 안드로이드 서비스가있는 경우 :서비스가 중지되면 백그라운드 스레드는 어떻게됩니까?
MyWidgetUpdater updater = new MyWidgetUpdater();
updater.updateWidgets(...);
updater
는 백그라운드 스레드에서 데이터를 검색 한 다음 전경 스레드에서 위젯 (들)를 업데이트합니다. 백그라운드 처리가 완료되기 전에 서비스가 중지되면 (예 : stopSelf()
) 어떻게됩니까? 이로 인해 위젯이 때때로 업데이트를 완료하지 못하게됩니까 (스레드가 아마도 죽을 것이므로)? 그렇다면 모든 위젯이 업데이트를 완료하고 서비스를 중지 할 때를 알 수있는 디자인 패턴이 있습니까?
감사합니다. CommonsWare. 더 자세한 정보를 추가하기 위해서 백그라운드 스레드는''AsyncTask''를 사용하여 시작됩니다. ''AsyncTask''를 시작한 서비스가 중지되면''onPostExecute()''가 성공적으로 실행됩니까? –
예. 하지만 CommonsWare에서 지적한 것처럼 IntentService를 사용하거나 onPostExecute() 끝 부분에서 stopSelf()를 사용하는 것이 좋습니다. – pcans
@ChrisKnight : "서비스 (AsyncTask를 시작한)가 중지되면 onPostExecute()가 성공적으로 실행됩니까?" -- 아마도. 귀하의 프로세스는 언제든지 해지 될 수 있으며 귀하의 서비스가 파괴 될 때 해지 될 가능성이 더 큽니다. 그러므로 나는 pcans에 동의한다 :'IntentService'를 사용하거나'onPostExecute()'의 끝까지'stopSelf()'를 호출하지 마라. – CommonsWare