Android中本地广播的使用

之前我在博客中讲述过EventBus的使用方法。这个三方库为我们提供了一种订阅发布的模式,可以实现本地APP内部的数据共享发布的功能。今天介绍一种不依赖第三方实现该功能的方法,那就是Android为我们提供的本地广播,废话补多少,直接上代码步骤。

首先你要发送一个广播

/**
 * 发送广播
 */
private void sendLoginBroadcast(){
    LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(PatrolContract.UPDATE_RW_DB));
}

这里的PatrolContract.UPDATE_RW_DB是一个常量,用于在茫茫广播中找到那个你想要的广播。我是这样定义的。

public static final String UPDATE_RW_DB = "com.longway.action.UPDATE_RW_DB";

这样发送我们就写好了,接着就要写接收。和EventBus一样,接收的类中我们先要注册广播

 /**
  * 注册广播
  */
private void registerUpdateBroadcast() {
    IntentFilter filter = new IntentFilter(PatrolContract.UPDATE_RW_DB);
    LocalBroadcastManager.getInstance(this).registerReceiver(updateRwBroadcastReceiver, filter);
}

注册广播一般在onCreate中调用,onDestroy中则调用解除广播的代码,代码如下

/**
 * 取消广播
 */
private void unRegisterUpdateBroadcast() {
      LocalBroadcastManager.getInstance(this).unregisterReceiver(updateRwBroadcastReceiver);
}

接着就是接收器了

private class UpdateRwBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            //这里是接收到广播后我们要做的工作
            
        }
}

我们还可以通过Intent进行传值的操作,是不是很简单。至少我们可以不依赖三方库操作了。

ps:如果您用的是androidx的环境,如果您这里想要使用本地广播,那么需要添加如下依赖

implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'

这里感谢码友“空指针的皮皮虾“补充

你可能感兴趣的:(Android,Studio开发实战,从零基础到APP上线)