我使两个按钮一个开始服务,另一个使它停止
当我按停止按钮时,通知我服务已停止,但实际上它仍在后台运行
我在onStartCommand()
方法中使用计时器,每秒重复一次
是这个原因吗?以及如何强制立即停止服务。
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(),"start..",Toast.LENGTH_SHORT).show();
new Timer().scheduleAtFixedRate(new TimerTask() {
private Handler handler = new Handler(){
@Override
public void dispatchMessage(Message msg) {
Toast.makeText(getApplicationContext(),""+(counter+=1),Toast.LENGTH_SHORT).show();
}
};
@Override
public void run() {
handler.sendEmptyMessage(0);
}
},0,1000);
return START_STICKY;
}
`
和我的按钮动作:-
public void btnStart(View view){
startService(new Intent(MainActivity.this,MyService.class));
}
public void btnStop(View view){
stopService(new Intent(MainActivity.this,MyService.class));
}
我找到了答案..! 答案是必须取消onDestroy方法
中的timer和timerTask答案 0 :(得分:0)
如果您打算停止服务,则应调用stopService(Intent) 例如:
Intent intent = new Intent(MainActivity.this, YourService.class);
stopService(intent);
答案 1 :(得分:0)
这是有关如何停止服务的简化说明:
stopSelf()
用于始终停止当前服务。
stopSelf(int startId)
也用于停止当前服务,但前提是startId是上次启动服务时指定的ID。
stopService(Intent service)
用于停止服务,但是从服务外部停止。
访问此link以获得更多详细信息
请替换
return START_STICKY;
通过
return START_NOT_STICKY;
差异:
START_STICKY
系统被杀死后将尝试重新创建服务
START_NOT_STICKY
系统被杀死后将不会尝试重新创建服务