歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android入門:廣播發送者與廣播接收者

一、廣播發送者&廣播接收者介紹

1.廣播接收者

廣播接收者簡單地說就是接收廣播意圖的Java類,此Java類繼承BroadcastReceiver類,重寫:

public void onReceive(Context context,Intent intent),其中intent可以獲得傳遞的數據;

廣播意圖就是通過Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)發送的意圖,通過這個語句,能夠廣播給所有滿足條件的組件,比如intent設置了action="com.xiazdong",則所有在AndroidManifest.xml中設置過<action android:name="com.xiazdong"/>的廣播接收者都能夠接收到廣播;

2.廣播發送者

通常廣播發送方就是調用Context.sendBroadcast()的程序,而廣播接收者就是繼承BroadcastReceiver的程序;

通常廣播發送方都是通過隱式意圖,這樣才能發送給多人;

廣播發送方分為普通廣播和有序廣播;

同步廣播:發送方發出後,幾乎同時到達多個廣播接收者處,某個接收者不能接收到廣播後進行一番處理後傳給下一個接收者,並且無法終止廣播繼續傳播;Context.sendBroadcast(intent);

有序廣播:廣播接收者需要提前設置優先級,優先級高的先接收到廣播,優先級數值為-1000~1000,在AndroidManifest.xml的<intent-filter android:priority="xxx">設置;比如存在3個廣播接收者A、B、C,優先級A>B>C,因此A最先收到廣播,當A收到廣播後,可以向廣播中添加一些數據給下一個接收者(intent.putExtra()),或者終止廣播(abortBroadcast());Context.sendOrderedBroadcast(intent);

二、廣播接收者核心代碼

同步廣播發送方核心代碼:

  1. Intent intent = new Intent();  
  2. intent.setAction("...");  
  3. Context.sendBroadcast(intent);  

有序廣播發送方核心代碼:

  1. Intent intent = new Intent();  
  2. intent.setAction("...");  
  3. Context.sendOrderedBroadcast(intent,null);  

廣播接收者核心代碼:

  1. public class Receiver extends BroadcastReceiver{  
  2.     public void onReceive(Context context, Intent intent) {  
  3.         Bundle bundle = intent.getExtras();  
  4.         ...  
  5.     }  
  6. }  

AndroidManifest.xml

  1. <application>           
  2.     <receiver android:name=".Receiver">   
  3.         <intent-filter android:priority="1000">   
  4.             <action android:name="com.xiazdong"/>  
  5.         </intent-filter>  
  6.     </receiver>  
  7. </application>    
Copyright © Linux教程網 All Rights Reserved