无法从BroadcastReceiver

时间:2016-12-29 16:18:00

标签: android service broadcastreceiver

我从通过套接字向服务器发送数据的活动启动服务。当服务以onCreate()方法启动时,我也会使用setExact()方法设置闹钟。我的问题是,当onReceive()中的BroadcastReceiver被调用时,我想要停止服务,这是正在运行的核心,但它也会立即重新启动。使用下一个代码停止服务:

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

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

1 个答案:

答案 0 :(得分: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;
        }
    }
};

用于BroadcastReceiver上的使用处理程序使这个

handler.sendEmptyMessage(1);