按照是否有序分类
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);
-