即使应用程序被销毁,服务也不会停止

时间:2017-12-02 03:55:30

标签: android

我正在使用找到的一些样本每隔5秒建立一次吐司。 代码工作正常,但服务不会停止,即使我停止了应用程序。 谁能指出出了什么问题?

public class MyService extends Service {
public static final long INTERVAL=5000;//variable to execute services every 5 second
private Handler mHandler=new Handler(); // run on another Thread to avoid crash
private Timer mTimer=null; // timer handling
@Nullable
@Override
public IBinder onBind(Intent intent) {
    throw new UnsupportedOperationException("unsupported Operation");
}
@Override
public void onCreate() {
    // cancel if service is  already existed
    if(mTimer!=null)
        mTimer.cancel();
    else
        mTimer=new Timer(); // recreate new timer
    mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(),0,INTERVAL);// schedule task
}
@Override
public void onDestroy() {
    Toast.makeText(this, "In Destroy", Toast.LENGTH_SHORT).show();//display toast when method called
    mTimer.cancel();//cancel the timer

}
//inner class of TimeDisplayTimerTask
private class TimeDisplayTimerTask extends TimerTask {
    @Override
    public void run() {
        // run on another thread
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                // display toast at every 5second
                Toast.makeText(getApplicationContext(), "Notify", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

}

即使应用程序已关闭,我仍然会收到Toast通知。

2 个答案:

答案 0 :(得分:0)

在您的活动onStop()中,您应致电stopService(new Intent(context,YourService.class));以停止服务

答案 1 :(得分:0)

在MyService中添加onTaskRemoved()方法,就像这样

@Override
public void onTaskRemoved(Intent rootIntent) {
    stopSelf();///its will stop service
    super.onTaskRemoved(rootIntent);
}