Android -- 发送Broadcast、有序无序
普通廣播????????????????????????????????????????????????????????????????????????????????????
- 優缺點:和有序廣播的優缺點相反!
- 發送廣播的方法:sendBroadcast()
有序廣播??????????????????????????????????????????????????????????????????????????????????
- 優缺點
優點:1,按優先級的不同,優先Receiver可對數據進行處理,并傳給下一個Receiver
2,通過abortBroadcast可終止廣播的傳播??
缺點:效率低??
- 發送廣播的方法:sendOrderedBroadcast()
- 優先接收到Broadcast的Receiver可通過setResultExtras(Bundle)方法將處理結果存入Broadcast中,下一個Receiver 通過 Bundle bundle=getResultExtras(true)方法獲取上一個 Receiver傳來的數據。
工程??????????????????????????????????????????????????????????????????????????????????????????
MainActivity.java是程序住進口。
MyBroadcastReceiver.java等都是廣播接收者,只是等級不一樣。
FinalRecevier.java是有序廣播的時候,即使廣播被攔截了,這個還是可以接收到廣播的。
?
?
?
?
?
<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");//無序廣播 sendBroadcast(intent);//有序廣播//sendOrderedBroadcast(intent, null);//sendOrderedBroadcast(intent, null, new FinalRecevier(), null, 0, null, null); } }在某個廣播接收的類中加入
abortBroadcast();這是去攔截廣播,但是FinalRecevier還是接收到了的,無論怎么攔截廣播。
我是天王蓋地虎的分割線????????????????????????????????????????????????????????????????
源代碼:http://pan.baidu.com/s/1dD1Qx01
廣播發送.zip
?
?
?
轉載請注明出處:http://www.cnblogs.com/yydcdut
轉載于:https://www.cnblogs.com/yydcdut/p/3803666.html
總結
以上是生活随笔為你收集整理的Android -- 发送Broadcast、有序无序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 入门 ---- 如何在程序窗口显示
- 下一篇: 查看MySQL的当前日期