Android -- 发送Broadcast、有序无序
普通廣播????????????????????????????????????????????????????????????????????????????????????
- 優(yōu)缺點(diǎn):和有序廣播的優(yōu)缺點(diǎn)相反!
- 發(fā)送廣播的方法:sendBroadcast()
有序廣播??????????????????????????????????????????????????????????????????????????????????
- 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):1,按優(yōu)先級(jí)的不同,優(yōu)先Receiver可對(duì)數(shù)據(jù)進(jìn)行處理,并傳給下一個(gè)Receiver
2,通過(guò)abortBroadcast可終止廣播的傳播??
缺點(diǎn):效率低??
- 發(fā)送廣播的方法:sendOrderedBroadcast()
- 優(yōu)先接收到Broadcast的Receiver可通過(guò)setResultExtras(Bundle)方法將處理結(jié)果存入Broadcast中,下一個(gè)Receiver 通過(guò) Bundle bundle=getResultExtras(true)方法獲取上一個(gè) Receiver傳來(lái)的數(shù)據(jù)。
工程??????????????????????????????????????????????????????????????????????????????????????????
MainActivity.java是程序住進(jìn)口。
MyBroadcastReceiver.java等都是廣播接收者,只是等級(jí)不一樣。
FinalRecevier.java是有序廣播的時(shí)候,即使廣播被攔截了,這個(gè)還是可以接收到廣播的。
?
?
?
?
?
<receiver android:name=".MyBroadcastReceiver"><intent-filter android:priority="1000"><action android:name="com.yydcdut.nima"/></intent-filter></receiver><receiver android:name=".MyBroadcastReceiver2"><intent-filter android:priority="100"><action android:name="com.yydcdut.nima"/></intent-filter></receiver><receiver android:name=".MyBroadcastReceiver3"><intent-filter android:priority="10"><action android:name="com.yydcdut.nima"/></intent-filter></receiver><receiver android:name=".FinalRecevier"><intent-filter><action android:name="com.yydcdut.nima"/></intent-filter></receiver>在MyBroadcastReceiver.java中,代碼都差不多:
public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("MyBroadcastReceiver1111111接受到的廣播");Toast.makeText(context, "MyBroadcastReceiver", Toast.LENGTH_SHORT).show();}}在MainActivity.java中:
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View view){Intent intent = new Intent();intent.setAction("com.yydcdut.nima");//無(wú)序廣播 sendBroadcast(intent);//有序廣播//sendOrderedBroadcast(intent, null);//sendOrderedBroadcast(intent, null, new FinalRecevier(), null, 0, null, null); } }在某個(gè)廣播接收的類中加入
abortBroadcast();這是去攔截廣播,但是FinalRecevier還是接收到了的,無(wú)論怎么攔截廣播。
我是天王蓋地虎的分割線????????????????????????????????????????????????????????????????
源代碼:http://pan.baidu.com/s/1dD1Qx01
廣播發(fā)送.zip
?
?
?
轉(zhuǎn)載請(qǐng)注明出處:http://www.cnblogs.com/yydcdut
轉(zhuǎn)載于:https://www.cnblogs.com/yydcdut/p/3803666.html
總結(jié)
以上是生活随笔為你收集整理的Android -- 发送Broadcast、有序无序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt 入门 ---- 如何在程序窗口显示
- 下一篇: 教你如何在Android 6.0上创建系