2016-04-09 6 views
2

ich getrennte Netzwerkoperationen, IO-Operationen und andere Sachen, die Aktivitätsklasse bildenGibt es ein Muster oder Entwurfsmuster, um den Code von der Aktivität oder Fragmentklasse zu reduzieren? - Android

noch die onClick Funktionen, findViewById nennt, Implementierung von onCreate, OnStop onResume und anderen Lebenszyklus-Funktionen macht den Aktivitätscode sehr lang, hart zu verwalten und unordentlich zu sein ...

Gibt es ein Muster, das Sie verwenden, um die Reihenfolge und den Code aus der Aktivitätsklasse zu verringern?

+1

Werfen Sie einen Blick auf http://androidannotations.org/ – Kuffs

+0

@Kuffs danke ich werde es überprüfen – MBH

Antwort

1

Sie können Butterknife verwenden, um die onClick- und findView-Textbausteine ​​zu reduzieren, und natürlich wird Retrolambda nützlich sein.

Ich bestelle meine Activity-Lifecycle Methoden according to this diagram und benutze Editor Falte Kommentare um den Lebenszyklus zu gruppieren.

+0

Ich benutze bereits ButterKnife, und anstelle von MBH

+1

Ich kämpfe auch mit langen Aktivitäten 1k + Zeilen des Codes, aber dann wieder ist es ein Symptom, dass zu viele Aufgaben in dieser Aktivität Thats, wenn ich Refractoring starte, um Fragmente, CustomViews und CustomDialogues zu verwenden. –

+0

Ich stimme dir zu, aber in meinem Fall muss ich Tabelle, die 10 Textviews, 1 CustomAdapter, 3 Customdialogs und 1 Combobox-Gruppe mit 3 Comboboxen und 3 Tasten am Ende enthält .. Ich muss sie auf einer Seite zeigen .. in XML benutze ich ' MBH

1

Sie müssen so viel Code wie möglich aus den UI-Klassen verschieben. Dies ermöglicht das Testen von Einheiten und hilft dabei, den Code aufzuräumen.

Sie können Serviceklassen erstellen, um onClick-Funktionen zu implementieren, sodass Ihre onClick-Funktion nur eine Methode in Ihrem Service aufruft. Dann könnte der Service-Code getestet werden, ohne dass die Aktivität in Ihren Tests gestartet werden muss.

Sie können auch eine BaseActivity erstellen, die alle anderen erweitern und gemeinsam verwendeten Code einfügen.

Soweit findViewById können Sie ein Framework wie RoboGuice verwenden und die Annotation @InjectView auf Ihre Variablen verwenden. Ich benutze RoboGuice, um Dienste zu erstellen und diese Dienste in meine Aktivitäten einzufügen und auch meine Ansichten einzuspritzen. Das räumt viel auf.

Erstellen Sie auch Dienstprogramm Klassen, wo Sie können. Ich hoffe das hilft.

Verwandte Themen