安卓之Broadcast学习总结

本文详细介绍了在安卓系统中使用广播机制的通知原理及两种注册方式:代码注册与XML注册,同时阐述了如何利用广播在软件中实现数据传递。

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

Broadcast这安卓系统中的大喇叭。

如果你想让这个系统或软件发生了你需要知道的事情的时候通知你一下,那么 就用广播 吧。

广播很简单。

private class DataReceiver extends BroadcastReceiver {// 继承自BroadcastReceiver的子类
		@Override
		public void onReceive(Context context, Intent intent) {// 重写onReceive方法	
			Bundle bundle = intent.getExtras();
			int a = bundle.getInt("i");
		}
	}
}

这样就成功的构造出一个耳朵。

现在我们要把这个耳朵放在软件里边,并且告拆它听到什么东西才是有用的。

第一种方式是代码注册:优点是可以随时取消注册(unregisterReceiver(receiver);),我觉得比较省资源吧。

dataReceiver = new DataReceiver();
IntentFilter filter = new IntentFilter();// 创建IntentFilter对象
filter.addAction("com.ui.FileActivity");
registerReceiver(dataReceiver, filter);// 注册BroadcastReceiver

第二种方式是在xml文件中注册:它会始终处于活动状态,cpu和电源资源比较少。

<receiver android:name=".dataReceiver">  
            <intent-filter android:priority="20">  
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
            </intent-filter>  
        </receiver>  
还有一点就是动态注册的广播优先级是高于xml的静态注册的。

这样安好了耳朵还得找个喊话的,系统本身是有一个公告员,但他只会说他们家的事。如果你想在自己的软件中安张嘴的话,或者传递数据,那么如下:

Intent intent=new Intent();
intent.setAction("com.ui.FileActivity");
if (wifiNetInfo.isConnected()&&wifiNetInfo.isAvailable()) {
intent.putExtra("i", 1);
 }else{
intent.putExtra("i", 0);
}
sendBroadcast(intent);//发送广播
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值