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);//发送广播