自定義動態注冊廣播和靜態注冊廣播


一.動態注冊
關鍵代碼

 

class MyActivity extentds Activity{
    
    //DYNC_BROADCAST可以隨意,但注冊廣播和發送廣播時action應該保持一致
    private static final String DYNC_BROADCAST = "guo.com.example.dyncBroadcastReceiver";
    private DyncBroadcastReceiver dyncBroadcastReceiver = new DyncBroadcastReceiver();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        .....
        // 注冊廣播
        IntentFilter iFilter = new IntentFilter();
        iFilter.addAction(DYNC_BROADCAST);
        registerReceiver(dyncBroadcastReceiver, iFilter);
    }


    // 發送廣播通知
    protected void sendBroadcast(){
        Intent intent = new Intent();
        intent.setAction(DYNC_BROADCAST);
        sendBroacdcast(intent);
    }

  
  @Override
  protected void onDestroy() {
    unregisterReceiver(dyncBroadcastReceiver);
  super.onDestroy();
    
  }
}

 

二.靜態注冊

class MyActivity extentds Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        .....
    }


    // 發送廣播通知
    protected void sendBroadcast(){
        Intent intent = new Intent();
        intent.setAction("guo.com.example.MyBroadcast");
        sendBroacdcast(intent);
    }

}

 

AndroidManifest.xml

<receiver android:name=".MyBroadcastReceiver">
    <intent-filter>
        <action android:name="guo.com.example.MyBroadcast" />
    </intent-filter>
</receiver>

 

兩者區別:
動態注冊廣播需要在每個活動頁注冊,靜態廣播可以實現注冊到所有活動頁.因為動態注冊邏輯寫在onCreate中,所以應用如果沒啟動,則無法通知.靜態注冊可不受此限制.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM