Отправка данных из Broadcast Receiver в работающую службу - PullRequest
0 голосов
/ 10 июля 2019

Мне требуется служба для отправки сообщений в облако при получении данных с устройства. В результате у меня есть следующий код:

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;
      }
    }
  }
}

Я бы хотел разделить приемник вещания на отдельный файл.Как ты можешь это сделать?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

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;
  }
}
0 голосов
/ 10 июля 2019

Просто переместите mAlert из MessageService в PanicReceiver, после чего вы сможете использовать IDE, чтобы помочь вам реорганизовать класс, нажав F6 с курсором вверх по имени класса или щелчком правой кнопки мыши:

Right click

Refactor popup

...