简述
把工具类从广播知识点中抽离出来,可以更方便的帮助使用广播,同时加入安全相关的广播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
*/
@SafeVarargs
public static void sendBroadcast(String action, Pair<String, String>... pairs) {
sendBroadcast(PublicUtils.getContext(), action, pairs);
}
/**
* 发送广播
*
* @param context
* @param action
*/
@SafeVarargs
public 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);
}
}