我有一項服務,我從我的活動開始。 現在,serivce通過從onStartCommand()啓動一個新線程來執行一些任務() 我想在線程完成其作業後停止服務。如何在服務完成後停止服務?
我試圖用一個處理器這樣
public class MainService extends Service{
private Timer myTimer;
private MyHandler mHandler;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mHandler = new MyHandler();
myTimer = new Timer();
myTimer.schedule(new MyTask(), 120000);
return 0;
}
private class MyTask extends TimerTask{
@Override
public void run() {
Intent intent = new Intent(MainService.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
mHandler.sendEmptyMessage(0);
}
}
private static class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.e("", "INSIDE handleMEssage");
//stopSelf();
}
}
首先,它是給我一個警告,如果處理類也不是一成不變的,將導致泄漏 後我做了靜態,stopSelf()不能被稱爲,因爲它非靜態的。
我的方法是正確的還是有一個更簡單的方法?
您應該使用IntentService而不是服務。它在單獨的線程中自動啓動,並在任務完成時自行停止。 –