如何以编程方式强制停止 android 服务
how to force stop android service programmatically
我制作了两个按钮,一个用于启动服务,另一个用于停止服务
当我按下停止按钮时通知我服务已停止但实际上它仍在后台运行
我在 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
如果您打算停止您启动的服务,您应该调用 stopService(Intent)
例如:
Intent intent = new Intent(MainActivity.this, YourService.class);
stopService(intent);
以下是如何停止服务的简单说明:
stopSelf()
用于一直停止当前服务
stopSelf(int startId)
也用于停止当前服务,但前提是startId是上次启动服务时指定的ID。
stopService(Intent service)
是用来停止服务的,但是要从外部停止服务。
访问此 link 了解更多详情
请替换
return START_STICKY;
来自
return START_NOT_STICKY;
差异:
START_STICKY
系统会在您的服务被杀死后尝试重新创建您的服务
START_NOT_STICKY
系统不会在您的服务被杀死后尝试重新创建您的服务
我制作了两个按钮,一个用于启动服务,另一个用于停止服务
当我按下停止按钮时通知我服务已停止但实际上它仍在后台运行
我在 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
如果您打算停止您启动的服务,您应该调用 stopService(Intent) 例如:
Intent intent = new Intent(MainActivity.this, YourService.class);
stopService(intent);
以下是如何停止服务的简单说明:
stopSelf()
用于一直停止当前服务
stopSelf(int startId)
也用于停止当前服务,但前提是startId是上次启动服务时指定的ID。
stopService(Intent service)
是用来停止服务的,但是要从外部停止服务。
访问此 link 了解更多详情
请替换
return START_STICKY;
来自
return START_NOT_STICKY;
差异:
START_STICKY
系统会在您的服务被杀死后尝试重新创建您的服务
START_NOT_STICKY
系统不会在您的服务被杀死后尝试重新创建您的服务