Шаблон проектирования для контроля состояния активностиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Шаблон проектирования для контроля состояния активности

Сообщение Anonymous »

У меня есть активность, содержащая несколько фрагментов и представлений. Когда я начал работать над своим приложением, у активности было несколько состояний, которые я изменил, добавив прослушиватели кликов во фрагменты и представления.
В настоящее время код вырос до> 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»