-
广播有几种形式?分别有什么特点?
Android广播的定义:无序广播 和 有序广播
无序广播:通过sendBroadcast()方法来发送,异步操作。
特点:所有的receivers接收broadcast的顺序都不确定,效率高。
有序广播:通过sendOrderedBroadcast来发送,所有的receiver依次执行。
特点:从优先级最高的广播接收器开始接收,如果优先级相同,谁先注册,就可以优先接收到广播。 -
广播的两种注册形式?
Android广播的注册形式分为:常驻型广播(静态注册) 和 非常驻型广播(动态注册)
常驻型广播:当应用程序关闭了,有广播信息来,广播接收器同样的能接收到;它的注册方式是在应用程序的AndroidManifast.xml 中进行注册。<!--广播注册、name里面填写广播类的路径 priority是广播的优先级--> <receiver android:name=".SmsBroadCastReceiver"> <intent-filter android:priority="60"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
优点:常驻型,不受应用生命周期的影响。
缺点:耗费cpu、电量等资源。非常驻型广播:理解为通过代码动态注册的和注册者关联的。例如:在 Activity 中的 onCreate 或者 onResume 中注册广播接收者,在 onDestory 中注销广播接收者。
//定义消息广播 class SmsReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { //doSomething } } //在onCreate 或者 onResume注册广播 private SmsReceiver smsReceiver=new SmsReceiver(); IntentFilter intentFilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); registerReceiver(smsReceiver,intentFilter); //发送广播 Intent intent=new Intent(); intent.setAction("android.provider.Telephony.SMS_RECEIVED"); sendBroadcast(intent); //销毁广播 unregisterReceiver(smsReceiver);
优点:不占用资源,在Android的广播机制中,动态注册的优先级高于静态注册的优先级,因此在必要 情况下,我们需要动态注册广播接收器。
缺点:跟生命周期绑定,程序退出,广播就会注销,就会无法进行广播监听。
复习Android之Broadcast Receiver
最新推荐文章于 2021-06-20 14:21:49 发布