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);
}
}
我不明白爲什麼這與我的問題有關。你能詳細說明嗎? – v4r
@ v4r - 如果兩個廣播接收機正在接收相同的廣播,然後使用優先級,則可以檢查哪個接收機首先處理它。 – upenpat
安全部分討論跨應用安全性。就我而言,這些消息是在相同的應用程序中發送和接收的,但不同的活動。 – v4r