В настоящее время код вырос до> 1,5 тыс. строк, и я понимаю, что мне нужно ввести некоторый шаблон, чтобы сделать его поддерживаемым.
Проблема в том, что когда я меняю свойство своей активности, мне нужно изменить макет в нескольких фрагментах или представлениях.
Например, у меня есть обработчик, который прослушивает сеть ответ:
Код: Выделить всё
//Handler to process messages from VendorCache
private Handler vendorCacheHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what == VendorCache.RECEIVED_OPTIONS){
String id = (String)msg.obj;
vendorOptionsManager = new VendorOptionsManager(id);
detailsPagerAdapter.updateOptions(vendorOptionsManager.isPickupTime(), vendorOptionsManager.hasOptions());
//Update Optional/Required labels
updateDestinationReqs();
//Enable/disable quote button depending on the pickupSite and booking options
checkQuoteStateAndUpdate();
if(pendingOrderOptions != null && pendingOrderOptions.size() > 0 && vendorOptionsManager != null){
//Spinner is hidden and options are populated with new values
detailsPagerAdapter.updateOptionsView(VendorUtils.getReadableString(pendingOrderOptions,vendorOptionsManager.getAllOptions()), getResources().getColor(R.color.default_color_main));
}
}
else if(msg.what == VendorCache.MALFORMED_ID || msg.what == VendorCache.REQUEST_FAILED){
vendorOptionsManager = null;
//Update Optional/Required labels
updateDestinationReqs();
//Enable quote button
taskBar.setQuoteEnabled(true);
//Disable any options
detailsPagerAdapter.updateOptions(false, false);
}
}
};
Я не говорю, что моя активность перегружена представлениями. Я говорю, что у меня есть несколько свойств, которые связаны между собой. Например, если свойство A=true и B= true, то C="required" или если A=true и B = false, то C = "optional" и т. д. Из-за этого у меня много вызовов подобных методов.
Я подумываю о введении класса ActivityStateController, который будет реализовывать шаблон Observer. Это позволит мне скрыть управление состоянием внутри представлений и фрагментов. Но я все еще сомневаюсь в этом (например, что сделать, чтобы показать прогресс в просмотрах?)
Каковы способы управления сложным состоянием активности? Есть ли что-то похожее на кодирование значений ключей в Android или Java?
Подробнее здесь: https://stackoverflow.com/questions/908 ... e-controll
Мобильная версия