我启动了一个返回START_STICKY的服务。
public void onToggleClicked(View view){
boolean on = ((Switch) view).isChecked();
boolean serviceRunning = isMyServiceRunning(MainService.class);
if(on && !serviceRunning){
startService(new Intent("com.banda.MainService"));
}else if(!on && serviceRunning){
stopGlyphService();
}
}
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
然后我打电话
private void stopGlyphService(){
stopService(new Intent("com.banda.MainService"));
}
调用服务上的onDestroy(),但服务仍在运行。下次单击切换按钮时, isMyServiceRunning()将返回false,并启动另一个服务实例。
当我关闭主活动,并通过将应用程序拉出应用程序托盘来终止应用程序时,其onDestroy()被调用的服务最终停止工作。
MainService中的onDestroy():
@Override
public void onDestroy(){
super.onDestroy();
System.out.println("Service stopping");
this.stopSelf();
}
简而言之:
我需要启动一个在主要活动之后继续运行的服务 被杀(START_STICKY)。
关闭主要活动后,我需要能够停止服务 然后再次打开并终止服务。
即使主要活动没有,我也需要停止服务 关闭,所以我不会立即运行多个实例。
谢谢。