看到很多关于此的问题,但我无法解决这个问题。
我有这段代码
public class myBroadcastReceiver extends BroadcastReceiver {
private final String TAG = "myBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Consts.ANDROID_INTENT_ACTION_BOOT_COMPLEATE)){
Intent newinIntent = new Intent(context, ServiceBootCompleated.class);
context.startService(newinIntent);
}
}
}
它启动Service
,我可以使用此行调试它
android.os.Debug.waitForDebugger();
我看到return START_NOT_STICKY;
已执行但仍然存在
该服务作为“正在运行”的服务可见
设置>程序>运行服务
onDestroy()
我该怎么做才能阻止它,答案 0 :(得分:3)
完成您要在后台拨打stopSelf()
确保您在服务中所做的任何实际工作都是作为后台线程完成的,而不是在onCreate或onStartCommand中完成的。
有关服务生命周期的详细信息,请参阅http://developer.android.com/reference/android/app/Service.html#ServiceLifecycle。
示例:
public int onStartCommand(final Intent intent, final int flags, final int startId)
{
Thread thread = new Thread(new Runnable()
{
@Override
public void run()
{
//do work
stopSelf();
}
},"MyWorkerThread");
thread.start();
return Service.START_NOT_STICKY;
}
答案 1 :(得分:0)
完成任务后,您必须执行context.stopService()来停止此类未绑定服务。
的问候,
SSuman185