按照是否有序分类
1,普通广播(无序广播)
广播按照逻辑上同一时刻(实际可能被CPU按照抢占式任务无序发给注册模块)发送给注册模块
#发送方法:
Context.sendBroadcast()
2,有序广播
广播按照注册模块的优先级有序的发给注册模块,优先级越高,值越大,就越被优先接收
#发送方法:
Context.sendOrderedBroadcast()
#优先级判断方法(priority="999"表示最高优先级):
<receiver android:name="com.broadcast.receiver.SortBroadcastReceiverA"> <intent-filter android:priority="999"> <action android:name="com.broadcast.test"/> </intent-filter> </receiver>
按照是否动态分类
1,静态广播
静态广播直接被注册到androidmanifest.xml中,特点是即使app没有启动,广播接收器也能接收到广播消息。
静态广播:
<receiver android:name="com.broadcast.receiver.testReceiver"> <intent-filter > <action android:name="com.broadcast.test"/> </intent-filter>
</receiver>
2,动态广播
在其他组件的生命周期中动态创建广播接收器,特点是广播接收器也有生命周期,需要进行创建和销毁,应用推出后无法再收到广播。最后动态注册的广播需要使用隐式intent进行发送,静态注册的显示隐式都可以。
//注册广播
IntentFilter counterActionFilter = new IntentFilter(NEW_LIFEFORM_DETECTED);
receiver = new UnSortBroadcastReceiver();
registerReceiver(receiver, counterActionFilter);
intent分类
1,显示intent
Intent intent = new Intent(this,ActNextActivity.class)//创建一个目标确定的意图
2,隐式intent
//设置意图动作为准备拨号
intent.setAction(Intent.ACTION_DIAL);
Uri uri = Uri.parse("tel:"+phoneNo);
intent.setData(uri);
startActivity(intent);