Local broadcast manager is more secure and efficient

For the broadcast only used in the application, local broadcast manager is preferred to register and send. Local broadcast manager has better security and higher operating efficiency. Note: the code that uses the context ා sendbroadcast() and other methods to send global broadcast will be prompted. If the broadcast is only used in the application, the local broadcast manager can be used to avoid security problems such as broadcast leakage and broadcast interception, and it is more efficient than the global broadcast local broadcast.

Example:

public class MainActivity extends ActionBarActivity {
 private MyReceiver receiver;
 private IntentFilter filter;
 private Context context;
 private static final String MY_BROADCAST_TAG = "com.example.localbroadcast";
 @Override
 protected void onCreate(Bundle savedInstanceState) {

 setContentView(R.layout.activity_main);
 receiver = new MyReceiver();
 filter = new IntentFilter();
 filter.addAction(MY_BROADCAST_TAG);

 Button button = (Button) findViewById(R.id.button);
 button.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View view) {
 Intent intent = new Intent();
 intent.setAction(MY_BROADCAST_TAG);
 LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
 }
 });
 }

 @Override
 protected void onResume() {
 super.onResume();
 LocalBroadcastManager.getInstance(context).registerReceiver(receiver, filter);

 @Override
 protected void onPause() {
 super.onPause();
 LocalBroadcastManager.getInstance(context).unregisterReceiver(receiver);
 }

 class MyReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context arg0, Intent arg1) {
 // message received
 }
 }
}

Counter example:
All broadcasts use global broadcast

//In activity, sending broadcast
Intent intent = new Intent("com.example.broadcastreceiver.SOME_ACTION");
sendBroadcast(intent);

Posted by phpparty on Wed, 01 Apr 2020 01:13:14 -0700