之前我在博客中讲述过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'
这里感谢码友“空指针的皮皮虾“补充