2016-12-29 32 views
0

我从通过套接字发送数据到服务器的活动开始服务。在onCreate()方法开始服务的时候,也用setExact()方法设定报警。我的问题是当中的onReceive()被调用时,我想停止服务,它正在正常工作,但它也被重新启动。使用下一个代码停止服务:无法从BroadcastReceiver中终止服务

Intent i = new Intent(context, SocketService.class); 
context.stopService(i); 

如果从Activity中调用它,它将正常工作。当BroadcastReceiver被执行时,没有任何活动绑定到该服务,所以它应该停止,而不会立即重新创建。

回答

1

您的服务。

private Intent myservice; 

启动的方法,服务的onCreate()

myservice = new Intent(this, myservice.class); 
    startService(myservice); 

,你也可以与处理器开始为您服务。

并停止使用处理程序。

private Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     switch (msg.what) { 
      case 1: 
        stopService(myservice); 
       break; 
      default: 
       Log.d("STOP", msg.what + " ? "); 
       break; 
     } 
    } 
}; 

对广播接收器使用的处理器使这个

handler.sendEmptyMessage(1);