将参数传递给 BroadcastReceiver 子类 - Android

Passing parameters to BroadcastReceiver subclass - Android

将附加参数传递给动态注册的 BroadcastReceiver。

问题很简单:我想将参数传递给 BroadcastReceiver。这可以做到吗?即使接收器是动态创建的?

此外,假设我创建了一个匿名 BroadcastReceiver,即作为变量实现。我可以引用封装 class 变量吗?检查下面的代码,了解我如何停止/启动文件观察器。

        // Create the external media broadcast receiver.
        mExternalMediaBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(final Context context, final Intent intent) {
                // if action = media removed, stop the file observer.
                EncapsulatingFragment.this.mFileObserver.stopWatching()
            }
        };

这有效吗?

Is this valid?

只要接收器的生命周期与EncapsulatingFragment.this相同,就可能。

I want to pass parameters to a BroadcastReceiver. Can this be done? Even when the receiver is created dynamically?

创建一个实际的 class 并将值传递给构造函数:

class WhateverReceiver extends BroadcastReceiver {
  FileObserver mFileObserver;

  WhateverReceiver(FileObserver observer) {
    mFileObserver = observer;
  }

  @Override
  public void onReceive(final Context context, final Intent intent) {
    // if action = media removed, stop the file observer.
    mFileObserver.stopWatching();
  }
}

然后,在您的片段中:

mExternalMediaBroadcastReceiver = new WhateverReceiver(mFileObserver);

综上所述……您可能想考虑是否应在您的片段中实现此逻辑。 I/O-related 理想情况下,内容位于片段之外,例如在存储库对象中。