将参数传递给 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 理想情况下,内容位于片段之外,例如在存储库对象中。
将附加参数传递给动态注册的 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 理想情况下,内容位于片段之外,例如在存储库对象中。