BroadcastReceiver
大家对BroadcastReceiver 最熟悉的似乎是:
sendBroadcast(Intent)
registerReceiver(BroadcastReceiver,IntentFilter)
BroadcastReceiver 作为一个独立的class 会有一些棘手的问题 挡在大家面前
1. 如何把得到的信息返回给某个Thread
2. 代码比较零散 有一些阅读障碍
所以说 BroadcastReceiver 最好作为内部类
[代码]
1. 先定义一些供 Broadcast 与 Message 有关的字串 供BroadcastReceiver使用
public class BroadcastColumn {
//Broadcast format definition: Broadcast_[destination]
public final static String BROADCAST_TaskB = "Broadcast_TaskB";
//Message format definition: Message_[what]
public final static String MESSAGE_STRING = "Message_string";
}
2. 定义 MessageListenerHelper extends BroadcastReceiver 并把 registerReceiver() 也放入其中
public class MessageListenerHelper extends BroadcastReceiver {
Context context;
MessageListenerHelper listener;
//construct
public MessageListenerHelper(Context c){
context = c;
//to instance it
listener = this;
}
public void registerAction(String action){
IntentFilter filter = new IntentFilter();
filter.addAction(action);
context.registerReceiver(listener,filter);
}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Bundle b = arg1.getExtras();
if(b.containsKey(BroadcastColumn.MESSAGE_STRING)){
String string = b.getString(BroadcastColumn.MESSAGE_STRING);
Log.d("TAG",string);
}
}
}
3. 定义 MessageListenerHelper 实例 并 注册
MessageListenerHelper listener = new MessageListenerHelper(this);
listener.registerAction(BroadcastColumn.BROADCAST_TaskB);
done!