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);
}
}
};
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?
Mobile version