Android: How to use LocalBroadcastManager

前端 未结 1 1969
Happy的楠姐
Happy的楠姐 2021-01-18 18:53

I was trying to find answer how to use LocalBroadcastManager in class that extends BaseAdapter but after hours spent by doing research how to do it

相关标签:
1条回答
  • 2021-01-18 19:24

    I can only answer about LocalBroadcastManager.

    1. Add support library to your SDK and then to your Android project.
    2. Obviously, import the support library in your java class, etc.
    3. Declare your LocalBroadcastManager and instance it. Also, you can declare it static and use it throughout your (entire) app. So you don't have to instance a new one for every activity, etc.

      public static LocalBroadcastManager mBroadcaster;
      mBroadcaster = LocalBroadcastManager.getInstance(yourAppContextHere);
      
    4. In every activity, service, etc, register and unregister a Receiver according to each's lifecycle. Each receiver can have different filters. For example in onResume (or onCreate) and onPause (or onDestroy)::

      IntentFilter mFilter = new IntentFilter(MY_ACTION_1);
      mFilter.addAction(MY_ACTION_2);
      
      mBroadcaster.registerReceiver(localBluetoothReceiver, mFilter);
      mBroadcaster.unregisterReceiver(localBluetoothReceiver);
      

      And, finally, sending broadcasts and receiving with the receiver:

      Intent sendCmdIntent = new Intent("your.package.name.your.action.name");
      sendCmdIntent.putExtra(key, value);
      mBroadcaster.sendBroadcast(sendCmdIntent);
      
      
      private BroadcastReceiver localBluetoothReceiver = new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
              String action = intent.getAction();
              Do whatever depending on the action and on the extra stuff you put in the intent.
      

    All this is quoted from memory, feel free to edit it!

    0 讨论(0)
提交回复
热议问题