简述
把工具类从广播知识点中抽离出来,可以更方便的帮助使用广播,同时加入安全相关的广播LocalBroadcastManager,更加灵活方便使用。
api
registerBroadcastK :注册广播unregisterBroadcastK:解除注册sendBroadcastK :发送广播
源码
public class BroadcastUtils {/*** 注册广播** @param broadcastReceiver* @param action*/public static void registerBroadcast(BroadcastReceiver broadcastReceiver, String... action) {registerBroadcast(PublicUtils.getContext(), broadcastReceiver, action);}/*** 注册广播** @param context* @param broadcastReceiver* @param action*/public static void registerBroadcast(Context context, BroadcastReceiver broadcastReceiver, String... action) {if (context == null || broadcastReceiver == null) return;IntentFilter intentFilter = new IntentFilter();for (String s : action) {intentFilter.addAction(s);}LocalBroadcastManager.getInstance(context).registerReceiver(broadcastReceiver, intentFilter);// context.registerReceiver(broadcastReceiver, intentFilter);}/*** 解除注册广播,广播要和注册时是同一个** @param broadcastReceiver*/public static void unregisterBroadcast(BroadcastReceiver broadcastReceiver) {unregisterBroadcast(PublicUtils.getContext(), broadcastReceiver);}/*** 解除注册广播,广播要和注册时是同一个** @param context* @param broadcastReceiver*/public static void unregisterBroadcast(Context context, BroadcastReceiver broadcastReceiver) {if (context == null || broadcastReceiver == null) return;LocalBroadcastManager.getInstance(context).unregisterReceiver(broadcastReceiver);// context.unregisterReceiver(broadcastReceiver);}/*** 发送广播** @param action*/@SafeVarargspublic static void sendBroadcast(String action, Pair<String, String>... pairs) {sendBroadcast(PublicUtils.getContext(), action, pairs);}/*** 发送广播** @param context* @param action*/@SafeVarargspublic static <T> void sendBroadcast(Context context, String action, Pair<String, T>... pairs) {if (context == null || TextUtils.isEmpty(action)) return;Intent intent = new Intent(action);if (pairs != null && pairs.length != 0) {T second;for (Pair<String, T> pair : pairs) {second = pair.second;if (second instanceof String) {intent.putExtra(pair.first, (String) second);} else if (second instanceof Integer) {intent.putExtra(pair.first, (Integer) second);} else if (second instanceof Long) {intent.putExtra(pair.first, (Long) second);} else if (second instanceof Double) {intent.putExtra(pair.first, (Double) second);} else if (second instanceof Serializable) {intent.putExtra(pair.first, (Serializable) second);}}}LocalBroadcastManager.getInstance(context).sendBroadcast(intent);// context.sendBroadcast(intent);}}
