Android開發實踐 BroadcastReceiver

來源:互聯網
上載者:User

標籤:

BroadcastReceiver用於監聽系統全域的廣播訊息,接受程式所發出的Broadcast Intent。

1.Broadcast和BroadcastReceiver

Broadcast被分為兩種:Normal Broadcast(普通廣播);Ordered Broadcast(有序廣播);
Context提供了對應的方法發送廣播這兩種廣播:
sendBroadcast():發送Normal Broadcast
sendOrderedBroadcast():發送Ordered Broadcast(對於Ordered Broadcast,系統會根據接受者聲明的優先順序別按順序逐個執行接受者,優先接受到的Broadcast可以終止Broadcast,調用BroadcastReceiver的abortBroadcast()方法即可終止Broadcast)。

程式啟動BroadcastReceiver需要兩步:
第1步:建立需要啟動的BroadcastReceiver的Intent
第2步:調用Context的sendBroadcast()或者sendOrderedBroadcast()方法來啟動指定的BroadcastReceiver

注意:OnXxxListener只是程式級的監聽器,BroadcastReceiver只是一個系統級的監聽器且擁有自己的進程。
2.發送Broadcast、並使用BroadcastReceiver接受廣播

下面簡單實現了如何發送Broadcast、使用BroadcastReceiver接受廣播:

(1)在Activity中建立一個Intent,並使用該Intent對象對外發送一條廣播

// 建立Intent對象Intent intent = new Intent();// 設定Intent的Action屬性intent.setAction("com.gc.action.CRAZY_BROADCAST");intent.putExtra("msg", "Test Message");// 發送廣播sendBroadcast(intent);

(2)該程式使用到的BroadcastReceiver代碼如下:

public class MyReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        System.out.println("接受到的Intent的Action:" + intent.getAction());        System.out.println("訊息內容是:" + intent.getStringExtra("msg")");    }}

(3)配置上面的BroadcastReceiver應該監聽的Action字串的Intent
有兩種方式進行配置:
第一種:在代碼中配置:

IntentFilter filter = new IntentFilter("com.gc.action.CRAZY_BROADCAST");MyReceiver receiver = new MyReceiver();registerReceiver(receiver, filter);

第二種:在AndroidManifest.xml檔案中配置

<receiver android:name=".MyReceiver">    <intent-filter>        <action android:name="com.gc.action.CRAZY_BROADCAST" />    </intent-filter>        </receiver>
3.接受系統廣播訊息

下面是常見Action常量,更多的請參考官方文檔中關於Intent的說明(docs/reference/android/content/Intent.html)。

Action常量 對應字串 簡單說明
ACTION_TIME_CHANGED android.intent.action.TIME_SET 系統時間被改變
ACTION_DATE_CHANGED android.intent.action.DATE_CHANGED 系統日期被改變
ACTION_BOOT_COMPLETED android.intent.action.BOOT_COMPLETED 系統啟動完成
ACTION_SHUTDOWN android.intent.action.ACTION_SHUTDOWN 系統被關閉
ACTION_BATTERY_LOW android.intent.action.BATTERY_LOW 電池電量低
ACTION_POWER_CONNECTED android.intent.action.ACTION_POWER_CONNECTED 系統串連電源
ACTION_POWER_DISCONNECTED android.intent.action.ACTION_POWER_DISCONNECTED 系統與電源斷開

Android開發實踐 BroadcastReceiver

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.