In einer Android-App registriert ich einen Empfänger in MainActivity der onCreateZwei Empfänger von Android LocalBroadcast, eine in MainActivity, das andere in einem Fragment
IntentFilter mFilter = new IntentFilter("Action");
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, mFilter);
In seiner 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();
Ehrlich gesagt ich bin nicht sicher, warum wir einen Thread als solchen verwenden wollten (ich habe den Code von irgendwo kopiert, ohne ihn vollständig zu verdauen).
Diese App unterstützt ViewPager, also in seinem die zugehörigen Fragmente onCreate
IntentFilter mFilter = new IntentFilter("Action");
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mReceiver, mFilter);
Sowohl MainActivity und Fragment-Klasse, der Empfänger wie folgt aussieht:
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
...
}
Nur was drin ist OnReceive in beiden Klassen unterscheidet.
Ich weiß nicht zu viel, wie LocalBroadcast funktioniert, ich erwartete, dass beide Empfängerhandler ausgeführt würden, sobald die Sendung ausgestrahlt wird. Stattdessen habe ich meistens nur den Empfänger in MainActivity bemerkt, der gelegentlich in der Fragmentklasse läuft.
Meine Ahnung ist, dass es etwas mit dem Thread Teil zu tun hat.