BroadcastReceiver 最好作为内部类

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!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值