Android學習筆記——BroadcastReceiver

BroadcastReceiver的靜態註冊和動態註冊


註冊廣播的方式

1.動態註冊(在*.java代碼中註冊)
2.靜態註冊(在AndroidManifest.xml中註冊receiver)

例:動態註冊,監聽網絡變化

MainActivity.java
1. 聲明兩個數據成員

    private IntentFilter intentFilter;
    private NetworkChangeReceiver networkChangeReceiver;

2.在onCreate方法裏註冊廣播

    intentFilter = new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); //要監聽的廣播(網絡變化)
        networkChangeReceiver = new NetworkChangeReceiver();
        registerReceiver(networkChangeReceiver, intentFilter);          //註冊

3.重寫MainActivity的onDestory方法,取消註冊

    @Override
    protected void onDestroy() {
        super.onDestroy();
        localBroadcastManager.unregisterReceiver(networkChangeReceiver);    //取消註冊
    }

4.創建一個內部類NetworkChangeReceiver繼承廣播接收器BroadcastReceiver

class NetworkChangeReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
            if(networkInfo!=null && networkInfo.isAvailable()){
                Toast.makeText(context, "network is available", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(context, "network is unavailable", Toast.LENGTH_SHORT).show();
            }
        }
    }

5.在AndroidManifest.xml內加入查看系統網絡狀態的權限

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

6.運行程序,在打開或關閉網絡時就會有相應提示,即使按下Home鍵,打開其他應用也能檢測到網絡狀態變化併發送廣播(但如果按返回鍵則不行,返回會自動調用onDestroy方法取消註冊的廣播。)

例:靜態註冊,實現開機啓動

1.新建類繼承BroadcastReceiver,重寫onReceive方法

 public class BootCompleteReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Boot Complete", Toast.LENGTH_LONG).show);
    }

}         

2.在AndroidManifest中聲明開機啓動權限

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

3.在AndroidManifest中靜態註冊廣播接收器

        <receiver android:name=".BootCompleteReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

4.把程序安裝在手機上,重啓手機後,就會看到發出的廣播”Boot Complete”

發佈了40 篇原創文章 · 獲贊 41 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章