簡體   English   中英

將數據從廣播接收器發送到正在運行的服務

[英]Send data from Broadcast Receiver to running 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;
      }
    }
  }
}

我想將廣播接收器分隔為一個單獨的文件。 你該怎么做?

只需將mAlert從MessageService移到PanicReceiver,您就可以使用IDE來幫助您重構類,並在類名上方按F6或右鍵單擊:

右鍵點擊

重構彈出窗口

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM