您的位置:首页 > 其它

MessageUtil 关于广播的工具类

2015-10-14 10:49 295 查看
/**
*
* Copyright (c) 2014 CoderKiss
*
* CoderKiss[AT]gmail.com
*
*/

package com.kisstools.utils;

import java.util.LinkedList;

import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v4.content.LocalBroadcastManager;
import android.text.TextUtils;

import com.kisstools.KissTools;

public class MessageUtil {
public static final String TAG = "Messager";

public static final String BROADCAST_PARAM = "broadcast_param";
public static final String REQUEST_ACTION = "request_action";
public static final String RESPONSE_ACTION = "response_action";

private static volatile MessageUtil instance;

public static final MessageUtil sharedInstance() {
synchronized (MessageUtil.class) {
if (instance == null) {
instance = new MessageUtil();
}
}
return instance;
}

private LocalBroadcastManager mManager;
private LinkedList<BroadcastReceiver> mReceivers;

private MessageUtil() {
mReceivers = new LinkedList<BroadcastReceiver>();
mManager = LocalBroadcastManager.getInstance(KissTools
.getApplicationContext());
}

public void registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
if (receiver == null || filter == null) {
LogUtil.e(TAG, "invalid parameters");
return;
}

synchronized (mManager) {
if (mReceivers.contains(receiver)) {
LogUtil.e(TAG, "unregister old receiver!");
mManager.unregisterReceiver(receiver);
}

mReceivers.addLast(receiver);
mManager.registerReceiver(receiver, filter);
}
}

public void unregisterReceiver(BroadcastReceiver receiver) {
if (receiver == null) {
LogUtil.e(TAG, "invalid parameters!");
return;
}

if (!mReceivers.contains(receiver)) {
return;
}

synchronized (mManager) {
mReceivers.remove(receiver);
mManager.unregisterReceiver(receiver);
}
}

public void sendBroadcast(Intent intent) {
if (intent == null) {
return;
}
String action = intent.getAction();
LogUtil.d(TAG, "sendBroadcast " + action);
mManager.sendBroadcast(intent);
}

public void sendBroadcast(String action, String info) {
if (TextUtils.isEmpty(action)) {
LogUtil.e(TAG, "invalid action");
return;
}

Intent intent = new Intent(action);
if (!TextUtils.isEmpty(info)) {
intent.putExtra(BROADCAST_PARAM, info);
}
mManager.sendBroadcast(intent);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: