2014-04-15 98 views
0

我有三個活動:BaseActivity,ActivityA,ActivityB其中ActivityA和B擴展了BaseActivity。在ActivityA和B中,我都有一個處理一些意圖的BroadcastReceiver。在ActivityA和B中有一些目前由相同代碼處理的相同意圖。由於這違反了DRY原則,我想在父類(BaseActivity)中處理ActivityA和B中的常見意圖。是否有可能這樣做?從父活動繼承BroadcastReceiver活動

這裏是代碼。意圖LOGIN_SUCCESS在ActivityA和B中都是相同的。而ACCOUNT_UPDATE和JOURNAL_UPDATE意圖是特定於這些類的。

public abstract class BaseActivity extends RoboActivity implements Handler.Callback { 

} 


public class ActivityA extends BaseActivity { 

    private final BroadcastReceiver intentReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Constants.INTENTS.ACCOUNT_UPDATE)) { 
      updateGUI(); 
     } 

     if (intent.getAction().equals(Constants.INTENTS.LOGIN_SUCCESS)) { 
      updateGUI(); 
     } 
    }; 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     // Register which actions to listen to 
     IntentFilter intentFilter = new IntentFilter(Constants.INTENTS.ACCOUNT_UPDATE); 
     intentFilter.addAction(Constants.INTENTS.LOGIN_SUCCESS); 
     LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(intentReceiver, intentFilter); 
    } 
} 

public class ActivityB extends BaseActivity { 

    private final BroadcastReceiver intentReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if(intent.getAction().equals(Constants.INTENTS.JOURNAL_UPDATE)){ 
      updateGUI(); 
     } 

     if (intent.getAction().equals(Constants.INTENTS.LOGIN_SUCCESS)) { 
      updateGUI(); 
     } 
     } 
    }; 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     // Register which actions to listen to 
     IntentFilter intentFilter = new IntentFilter(Constants.INTENTS.JOURNAL_UPDATE); 
     intentFilter.addAction(Constants.INTENTS.LOGIN_SUCCESS); 
     LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(intentReceiver, intentFilter); 
    } 
} 

回答

0

請通過以下鏈接閱讀安全部分。我想這是你在找什麼。 http://developer.android.com/reference/android/content/BroadcastReceiver.html

+0

我不明白爲什麼這與我的問題有關。你能詳細說明嗎? – v4r

+0

@ v4r - 如果兩個廣播接收機正在接收相同的廣播,然後使用優先級,則可以檢查哪個接收機首先處理它。 – upenpat

+0

安全部分討論跨應用安全性。就我而言,這些消息是在相同的應用程序中發送和接收的,但不同的活動。 – v4r