BroadCast小結

一、BroadCast註冊方式android

  靜態註冊:即在AndroidManifest.xml 文件中定義  xml

              <receiver android:name=".BroadCastB">
               <intent-filter>
              <action android:name="android.intent.action.AIRPLANE_MODE"></action>
              </intent-filter>
              </receiver>

  動態註冊:get

      IntentFilter filter=new IntentFilter("com.lyy.broadcast");
      filter.setPriority(1);
      registerReceiver(new BroadCastC(),filter);

二、廣播的發送方式it

  普通廣播:sendBroadCast();io

  有序廣播:sendOrderBroadCast(); 根據IntentFilter定義的優先級發送,優先級越高,越先收到廣播ast

       傳遞數據:在廣播的傳遞過程當中,能夠使用 setResultData() 設置要傳遞的數據,並在下一個廣播中使用 getResultData()獲取值。。數據

  本地廣播:LocalBroadCast,應用內廣播。爲此,Android v4兼容包中給出了封裝好的LocalBroadcastManager類,用於統一處理App應用內的廣播問題,使用方式上與一般的全局廣播幾乎相同,只是註冊/取消註冊廣播接收器和發送廣播時將主調context變成了              LocalBroadcastManager的單一實例。經過這種方式發送的廣播,只能經過LocalBroadcastManager動態註冊的的接收器才能接收穫得。filter

三、接收系統廣播兼容

  當接收飛行模式的廣播是,發現用動態註冊沒法接收到,應儘可能使用靜態註冊。可是自從3.1以後,針對那些沒有啓動的應用,或者被強制中止的應用,就沒法接受到廣播,可是能夠設置flag 文件

  FLAG_EXCLUDE_STOPPED_PACKAGES :排除已經中止的應用(默認)
  FLAG_INCLUDE_STOPPED_PACKAGES :包括已經中止的應用

  因爲系統廣播沒法修改其Intent,因此只能接受現實了。。。。。。。。

相關文章
相關標籤/搜索