音乐播放器widget 补充

本文介绍了音乐播放器Widget中采用的BroadcastReceiver和Bundle复用技术。通过具体实例展示了如何利用这两种方式在组件间传递消息,包括注册监听器、发送广播及解析数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

音乐播放器widget 补充

 

[功能]

在 音乐播放器widget 前传 后传 有一些没讲清楚 所以打算再开辟 专门说一下

 

 

1. Bundle 复用

 

2. BroadcastReceiver 复用

 

 

[前提]

1. 现有一BroadcastReceiver:class MessageListenerHelper extends BroadcastReceiver 实现如下:

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

		}
		
	}

 

写道
补充:

其 onReceive() 没有实现 将在具体情况中分别实现之

 

 

 

以下就2点予以说明:

 

 

 

[Bundle 复用]

1. 注册MessageListenerHelper

MessageListenerHelper listener = new MessageListenerHelper(this);


listener.registerAction("Broadcast_MessageListwener");

 

 

2. 发生某Broadcast

public void sendMessageText(String s){
    	Intent i = new Intent(BroadcastColumn.BROADCAST_TaskB);
    	
    	Bundle b = new Bundle();
    	b.putString("Message_Text", s);
    	
    	i.putExtras(b);
    	sendBroadcast(i);
    }

 

 

3. 实现onReceive() 并对具体消息做判断

public void onReceive(Context arg0, Intent arg1) {
			// TODO Auto-generated method stub
			
			
Bundle b = arg1.getExtras();
			
if(b.containsKey("Message_Text")){
				String string = b.getString("Message_Text");
				Log.d("TAG",string);
			}

		}

 

 

 

4. 如此就实现了Bundle 复用

 

 

 

 

[Broadcast 复用]

1. 注册MessageListenerHelper

MessageListenerHelper listener = new MessageListenerHelper(this);

listener.registerAction("Broadcast_MessageListener_1");
		

MessageListenerHelper listener2 = new MessageListenerHelper(this);

listener2.registerAction(Broadcast_MessageListener_2);
		

 

 

2.  发生某Broadca

public void sendMessage1(String b,String key, String value){
    	Intent i = new Intent(b);
    	
    	Bundle b = new Bundle();
    	b.putString(key, value);
    	
    	i.putExtras(b);
    	sendBroadcast(i);
    }

 

 

3. 实现onReceive() 并对具体Broadcast 做判断

public void onReceive(Context arg0, Intent arg1) {
			// TODO Auto-generated method stub
			
if(arg1.getAction().endsWith("Broadcast_MessageListener_1")){


Bundle b = arg1.getExtras();
				
if(b.containsKey("Message_Text_1")){

String string = b.getString("Message_Text_1");


Log.d("TAG",string);
				}
}
else if(arg1.getAction().endsWith("Broadcast_MessageListener_2")){


Bundle b = arg1.getExtras();
				
if(b.containsKey("Message_Text_2")){


String string = b.getString("Message_Text_2");


Log.d("TAG",string);
				}
			}
			
		}

 

 

 

4. 此为Broadcast 复用

 

 

补充:

1. 其实除了在widget中 必须用 Broadcast复用外 二者都可以使用 具体用那个 视情况而定

2. 因为Broadcast复用中 需要new 2 次 所以推荐 尽量用 Bundle 复用 仅限个人意见

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值