在一个android应用程序中,我在MainActivity的onCreate中注册了一个接收器
IntentFilter mFilter = new IntentFilter("Action");
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, mFilter);
在其onResume中
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Intent i = new Intent("Action");
LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(i);
}
});
}
}).start();
坦率地说,我不知道为什么我们要这样使用线程(我从没有充分消化的地方复制代码)。
此应用程序支持ViewPager,因此在其关联的Fragment的onCreate中
IntentFilter mFilter = new IntentFilter("Action");
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mReceiver, mFilter);
在MainActivity和Fragment类中,接收器看起来像:
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
...
}
只有onReceive内部的内容在这两个类中有所不同。
我不太清楚LocalBroadcast是如何工作的,我希望一旦发出广播,两个接收器处理程序都会运行。相反,我注意到大多数时候只有MainActivity中的接收器运行,偶尔也会运行fragment类中的接收器。
我的直觉是,这与螺纹部分有关。