Android筆記(六十)Android總結:四大組件——BroadcastReceiver篇

來源:互聯網
上載者:User

標籤:

什麼是BroadcastReceiver

       BroadcastReceiver是Android體系的四大組件之一,本質上是一種全域的監聽器,用於監聽系統全域的廣播訊息,正式因為其本質為全域監聽,因此可以非常方便的實現系統中不同組件之間的通訊。也方便我們自己的app針對系統開機、電量低等廣播做出相應反映。同時我們也可以自己發送廣播,來實現不同組件之間的通訊

       系統接收簡訊廣播,然後彈出Toast:

package cn.lixyz.broadcastreceiver;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.util.Log;import android.widget.Toast;public class MainActivity extends Activity {    private IntentFilter filter;    private SMSReceiver sms;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");        sms = new SMSReceiver();        registerReceiver(sms, filter);    }    @Override    protected void onDestroy() {        // TODO Auto-generated method stub        super.onDestroy();        unregisterReceiver(sms);    }    class SMSReceiver extends BroadcastReceiver {        @Override        public void onReceive(Context context, Intent intent) {            Toast.makeText(context, "有簡訊", Toast.LENGTH_SHORT).show();            Log.d("TTTT", "~~~~~~~");        }    }}
MainActivity.java

       還需要添加許可權:

<uses-permission android:name="android.permission.RECEIVE_SMS" />

       運行結果:

       

       Android的大量系統事件都會對外發送廣播,下面是常見的廣播常量:

       ACTION_TIME_CHANGED   系統時間被改變

       ACTION_DATE_CHANGED   系統日期被改變

       ACTION_TIMEZONE_CHANGED   系統時區被改變

       ACTION_BOOT_COMPLETED       系統啟動完成

       ACTION_PACKAGE_ADDED        系統添加包

       ACTION_PACKAGE_CHANGED    系統的包改變

       ACTION_PACKAGE_REMOVED     系統的包被刪除

       ACTION_PACKAGE_RESTARTED  系統的包被重啟

       ACTION_PACKAGE_DATA_CLEARED    系統的包資料被清空

       ACTION_BATTERY_CHANGED     電池電量改變

       ACTION_BATTERY_LOW     電池電量低

       ACTION_POWER_CONNECTED    系統串連電源

       ACTION_POWER_DISCONNECTED      系統與電源斷開

       ACTION_SHUTDOWN        系統被關閉

Broadcast的分類

       廣播分為標準廣播有序廣播

       標準廣播是一種完全非同步執行的廣播,在廣播發出之後,所有的廣播接收器幾乎在同一時間都會接收到這條廣播,沒有順序可言,這種廣播效率高,但無法截斷。

       有序廣播則是一種同步執行的廣播,在廣播發出後,同一時刻只會有一個廣播接收器能夠接收到這條廣播訊息,當這個廣播接收器中的邏輯執行完畢之後,廣播才會繼續傳遞。優先順序高的廣播接收器可以先接收到,並且可以截斷廣播,廣播被截斷後,後面的廣播接收器就無法再接收到了。

 

Android筆記(六十)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.