Entwurfsmuster für die AktivitätsstatuskontrolleJava

Java-Forum
Anonymous
 Entwurfsmuster für die Aktivitätsstatuskontrolle

Post by Anonymous »

Ich habe eine Aktivität, die mehrere Fragmente und Ansichten enthält. Als ich anfing, an meiner App zu arbeiten, hatte die Aktivität mehrere Zustände, die ich geändert habe, indem ich Klick-Listener in Fragmenten und Ansichten auslöste.
Derzeit ist der Code auf mehr als 1,5.000 Zeilen angewachsen, und mir ist klar, dass ich ein Muster einführen muss, um ihn wartbar zu machen.
Das Problem besteht darin, dass ich, wenn ich die Eigenschaft meiner Aktivität ändere, das Layout in mehreren Fragmenten oder Ansichten ändern muss.
Zum Beispiel habe ich einen Handler, der auf das Netzwerk lauscht Antwort:

Code: Select all

    //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);
}

}
};
Wie Sie sehen können, ändern Methoden im Handler das Layout in Ansichten oder Fragmenten. Der Nachteil ist, dass ich je nach Antwort dieselben Methoden mit unterschiedlichen Parametern aufrufen muss. Eine ähnliche Situation tritt bei anderen Aktivitätseigenschaften auf.
Ich sage nicht, dass meine Aktivität mit Ansichten überlastet ist. Ich sage, dass ich mehrere Eigenschaften habe, die miteinander verbunden sind. Wenn zum Beispiel die Eigenschaft A=true und B=true ist, dann ist C=erforderlich oder wenn A=true und B=false ist, dann ist C=optional usw. Aus diesem Grund habe ich viele Aufrufe ähnlicher Methoden.
Ich denke darüber nach, die Klasse ActivityStateController einzuführen, die das Observer-Muster implementiert. Dadurch kann ich die Statusverwaltung in Ansichten und Fragmenten verbergen. Aber ich bezweifle das immer noch (z. B. was tun, um den Fortschritt in den Ansichten anzuzeigen?)
Welche Möglichkeiten gibt es, den Status komplexer Aktivitäten zu verwalten? Gibt es etwas Ähnliches wie die Schlüsselwertcodierung in Android oder Java?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post