<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                **Android四大組件之BroadcastReceiver** Broadcast Receiver 廣播接收器,是一種負責接收廣播消息并對消息做出響應的組件,和Service一樣并不提供與用戶交互的UI界面。它和事件處理機制類似,只不過事件處理機制是程序組件級別,而廣播事件是系統級別。 系統源碼:frameworks/base/core/java/android.content.BroadcastReceiver.java **1)BroadcastReceiver生命周期** BroadcastReceiver對象僅在調用onReceive()方法時有效,當該方法調用完畢,系統將摧毀這個對象。當下次再次受到廣播的時候將再次new生成一個BroadcastReceiver對象。當onReceive()方法在大概10秒內沒有執行完畢,系統會認為該程序無響應,所以在onReceive()方法如果需要做一些耗時的工作,我們可以通過發送Intet給其他Activity或Service來完成。 **2)Android標準的廣播ACTION** ~~~ ACTION_TIME_TICK ACTION_TIME_CHANGED 時間改變 ACTION_TIMEZONE_CHANGED ACTION_BOOT_COMPLETED 系統啟動完畢 ACTION_PACKAGE_ADDED 添加apk包 ACTION_PACKAGE_CHANGED apk包改變 ACTION_PACKAGE_REMOVED ACTION_PACKAGE_RESTARTED ACTION_PACKAGE_DATA_CLEARED ACTION_UID_REMOVED ACTION_BATTERY_CHANGED 電源改變 ACTION_POWER_CONNECTED 連接電源 ACTION_POWER_DISCONNECTED ACTION_SHUTDOWN 關機 ACTION_CAMERA_BUTTON 拍照 ACTION_MEDIA_MOUNTED ~~~ **3)發布廣播** 我們可以在應用程序中創建自定義的廣播事件。廣播的內容和用于過濾廣播的Action都通過Intent對象發送出去。 ~~~ { protected static final String MY_ACTION="com.example.myBroadcast.ACTION" Intent intent = new Intent(); intent.setAction(MY_ACTION); intent.putExtra("msg", "This is my a broadcast message"); sendBroadCast(intent); } ~~~ 在上述代碼中我們通過setAction()方法向Intent對象中加入了過濾廣播的動作,這個動作是我們自定義的,像Android中內置的廣播動作一樣,這個動作可以用來唯一的識別我們自定義的廣播。 在Context中系統提供了三種發送廣播的方法: **(1) Context.sendBroadcast();** 所有滿足條件的BroadcastReceiver都會執行其onReceive()方法 **(2) Context.sendStickyBroadcast();** 發送出去的Intent一直存在,而且如果以后系統中注冊的BroadcastReceiver滿足這個Action時會立即接收到這個廣播。 **(3) Context.sendOrderedBroadcast();** 發送出去的廣播會根據BroadcastReceiver注冊時IntentFilter設置的優先級的屬性來執行其onReceive()方法,相同優先級的BroadcastReceiver執行onReceive()方法的順序不確定。 **4)Broadcast Receiver的注冊** 如果我們希望在應用程序中能接受到某個廣播(Android系統內置的廣播或我們自己定義的廣播),并且對收到的廣播進行處理,那么我們需要創建一個BroadcastReceiver類,在其onReceive()方法中對廣播進行處理。同時我們還需要對我們的BroadcastReceiver進行注冊(告訴系統自己的存在)。 注冊BroadcastReceiver的方法有兩種: **(1)在AndroidManifest.xml文件中注冊** 在AndroidManifest.xml中注冊的廣播屬于常駐型廣播,即使應用程序關閉了,還能接收到廣播。 首先我們需要創建一個類,繼承自BroadcastReceiver并實現其onReceive()方法 ~~~ public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String msg = intent.getStringExtra("msg"); Toast.makeText(context, "接收到的廣播為:"+msg, Toast.LENGTH_LONG).show(); } } ~~~ 然后在AndroidManifest.xml中注冊: ~~~ <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="com.example.myBroadcast.ACTION"/> </intent-filter> </receiver> ~~~ **(2)在應用程序的代碼中注冊** 在代碼中使用registerReceiver()方法動態注冊的廣播屬于非常駐型廣播,當應用程序關閉后,我們調用了unregisterReceiver()解除了BroadcastReceiver,這種方法比較靈活。 在Activity中我們可以在onResume()方法中通過調用registerReceiver()方法注冊我們的BroadcastReceiver 然后在onStop()方法中調用unregisterReceiver()方法進行解注冊。 ~~~ MyBroadcastReceiver myReceiver = null; protected void onResume() { super.onResume(); if(myReceiver == null ) { myReceiver = new MyBroadcastReceiver(); IntentFilter filter = new InterFilter(); filter.addAction(MY_ACTION); registerReceiver(myReceiver, filter); } } protected void onStop() { if( myReceiver != null ) { unregisterReceiver(myReceiver); myReceiver = null; } super.onStop(); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看