歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android入門:廣播發送者與廣播接收者

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

日期:2017/3/1 10:16:02   编辑:Linux編程

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

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