java - 将数据从广播接收器发送到正在运行的服务

标签 java android broadcastreceiver android-service

我需要一项服务在从设备接收数据的同时向云端发送消息,因此我有以下代码:

public class MessageService extends Service {
  private int mAlert = 0;
  private PanicReceiver mPanicReceiver;

  @Override
  public void onCreate() {
    super.onCreate();
    mPanicReceiver = new PanicReceiver();

    IntentFilter panicFilter = new IntentFilter();
    panicFilter.addAction(Constants.PANIC_ON_RECEIVER_ACTION);
    panicFilter.addAction(Constants.PANIC_OFF_RECEIVER_ACTION);

    registerReceiver(mPanicReceiver, panicFilter);

  }

  @Override
  public void onDestroy() {
    unregisterReceiver(mPanicReceiver);
    super.onDestroy();
  }

  private class PanicReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
      switch (intent.getAction()) {
        case Constants.PANIC_ON_RECEIVER_ACTION:
          mAlert = 2;
          break;
        case Constants.PANIC_OFF_RECEIVER_ACTION:
          mAlert = 0;
          break;
      }
    }
  }
}

我想将广播接收器分离到一个单独的文件中。你怎么能做到这一点?

最佳答案

MessageService.class

public class MessageService extends Service {

  private PanicReceiver mPanicReceiver;

  @Override
  public void onCreate() {
  super.onCreate();
  mPanicReceiver = new PanicReceiver();

  IntentFilter panicFilter = new IntentFilter();
  panicFilter.addAction(Constants.PANIC_ON_RECEIVER_ACTION);
  panicFilter.addAction(Constants.PANIC_OFF_RECEIVER_ACTION);

  registerReceiver(mPanicReceiver, panicFilter);

  }

  @Override
  public void onDestroy() {
    unregisterReceiver(mPanicReceiver);
    super.onDestroy();
  }

  private int getAlert() {
    return mPanicReceiver.getAlert();
  }
}

PanicReceiver.java

private class PanicReceiver extends BroadcastReceiver {

  private int mAlert = 0;

  @Override
  public void onReceive(Context context, Intent intent) {
    switch (intent.getAction()) {
      case Constants.PANIC_ON_RECEIVER_ACTION:
        this.setAlert(2);
        break;
      case Constants.PANIC_OFF_RECEIVER_ACTION:
        this.setAlert(0);
        break;
    }
  }

  public int getAlert() {
    return mAlert;
  }

  public void setAlert(int mAlert) {
    this.mAlert = mAlert;
  }
}

关于java - 将数据从广播接收器发送到正在运行的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56963430/

相关文章:

java - 如何在 REST API 中获取请求的客户端主机名

android - 再次调用startService时如何清除alarmManager set()

java - 如何在不调用子类的情况下调用方法

java - 按下重置按钮后出现 NullPointerException。 (加工)

java - 我如何验证它,以便下面的前 3 位数字范围为 100-300(含),后 3 位数字范围为 001-999(含)

android - 需要在 android 解锁屏幕之前运行我的应用程序

android - 警报管理器不适用于具有 BroadcastReceiver 的应用程序

java - 将 double 添加到 ArrayList

android - 如何在 Android 中获得工作的垂直 SeekBar?

Android:ListView的回收机制