I mainly use LocalBroadcasts . They are essentially similar to real broadcasts, but only visible to your application. First you need to create a BroadcastReceiver like you, with a normal broadcast:
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(Intent.SOME_ACTION.equals(action)) {
You can then register and unregister BroadcastReceiver as follows:
@Override public void onResume() { super.onResume(); IntentFilter intentFilter = new IntentFilter(Intent.SOME_ACTION); LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity()); manager.registerReceiver(broadcastReceiver, intentFilter); } @Override public void onPause() { super.onPause(); LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity()); manager.unregisterReceiver(broadcastReceiver); }
And finally, you can send the broadcast from your Service or anywhere else in your application as follows:
Intent intent = new Intent(Intent.SOME_ACTION); LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity()); manager.sendBroadcast(intent);
Xaver kapeller
source share