Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)

Einführung

Dies ist die Android-Version (Java) von this.

Meine Android-Erfahrung ist auf einem Niveau, auf dem ich etwas machen kann, das funktioniert. Ich habe iOS gemacht, warum also nicht Android !!

Ich weiß nicht viel über Android, deshalb habe ich es vorerst mit MVC geschafft. Ich habe eine schnelle Suche nach MVC auf Android durchgeführt, war mir aber nicht sicher, deshalb habe ich sie ziemlich oft auf iOS gestellt.

Ich habe es mit dem Gefühl gemacht, dass es wahrscheinlich so ist, also würde ich es begrüßen, wenn Sie darauf hinweisen könnten, wenn es falsch war.

Der iOS-Typ, den ich früher gemacht habe

Umgebung

macOS High Sierra Version 10.13.2

Android Studio 3.2.1

Was zu machen

Wenn es zu wenige Funktionen gibt, wird es schwierig sein, den Unterschied zu verstehen, selbst wenn Sie es mit verschiedenen Designs machen, also werde ich dieses Mal die folgende Anwendung machen.

App-Anforderungen

Eine App, die das Wetter in jeder Präfektur mithilfe der Livedoor Weather Web API anzeigt (nicht für den kommerziellen Gebrauch verfügbar).

Das Ziel ist Android 5.0 oder höher.

Funktion

Listen Sie 47 Präfekturen auf und zeigen Sie das Wetter für die ausgewählte Präfektur heute, morgen und übermorgen an.

Bildschirmstruktur

Zwei Bildschirme, ein Präfekturlistenbildschirm und ein Detailbildschirm. (3 Bildschirme inklusive Splash)

Ignorieren Sie den Begrüßungsbildschirm. (Weil es nicht durch MVC getrennt ist)

Bildschirm der Präfekturliste

default

default

Detailbildschirm

default

Glossar

Ich denke, einer der Gründe, warum es individuelle Wahrnehmungsunterschiede wie MVC gibt, ist, dass die Bedeutung von Katakana nicht eindeutig ist.

Ich recherchiere über MVC und verstehe die Geschäftslogik nicht wirklich. Deshalb werde ich in diesem Artikel über die Bedeutung von Katakana schreiben. (Es kann von der tatsächlichen Bedeutung abweichen ...)

Was ist Geschäftslogik?

In der Erklärung von hier ist es "der Teil des Systems, der die systemspezifische Verarbeitung durchführt".

Für diese App gilt Folgendes

Was ist ein Layout?

Für diese App gilt Folgendes

Was ist eine Benutzeraktion?

Für diese App gilt Folgendes

Jedes Design

Ich habe [hier] gegeben, was ich gemacht habe (https://github.com/adventam10/AndroidArchitecture).

Diesmal habe ich Okhttp3 für die Kommunikation und JSONExport für die Erstellung einer Klasse erstellt, die JSON-Daten verarbeitet. Ich benutzte.

Ich werde meine Wahrnehmung jedes Designs, die Anzahl der Dateien, die Anzahl der Aktivitätszeilen und die Eindrücke, die ich gemacht habe, aufschreiben.

Fast Aktivität

Vorerst habe ich es mit Activity geschafft, ohne an irgendetwas [dies] zu denken (https://github.com/adventam10/AndroidArchitecture/tree/master).

Anzahl der Dateien

Anzahl der Aktivitätszeilen (einschließlich Kommentare)

Eindrücke gemacht

Die Anzahl der Dateien ist gering und die Entwicklungsgeschwindigkeit hoch. Jede Klasse hat ungefähr 300 Zeilen, daher denke ich, dass dies auch für diese Skala möglich ist. Da der Prozess im Adapter geschrieben ist, habe ich das Gefühl, dass die Anzahl der Aktivitätszeilen abgenommen hat.

MVC

Das Projekt ist this

Anerkennung

A_MVC

Modell (Anwendbar: Objekt)

Ansicht (Anwendbar: Fragment, Ansicht, XML)

Controller (Anwendbar: Aktivität)

Anzahl der Dateien

Anzahl der Aktivitätszeilen (einschließlich Kommentare)

Eindrücke gemacht

Vorerst habe ich Fragment als Ansicht erstellt. Das Abrufen des Schaltflächenereignisses und das Übergeben der Liste an den Adapter ist etwas ärgerlich, aber schlanker. Ich bin der Meinung, dass das Erstellen eines Modells das Speichern mit `onSaveInstanceState``` einfacher macht. Der Anzeigeprozess von PopupWindow hat die Anzahl der Aktivitätszeilen erheblich erhöht. Wenn Sie sie also etwas mehr teilen können, können Sie sie möglicherweise etwas schlanker gestalten. Für Bildschirme mit vielen Teilen kann `findViewById``` in Fragment gruppiert werden, sodass die Aktivität sehr erfrischend ist und ich denke, dass sie recht einfach zu verwenden ist.

Andere

Andere Punkte, die vom Hauptpunkt abweichen, aber besorgniserregend waren

schließlich

Es gab ziemlich viele Teile, an die ich nicht gewöhnt war, als ich es wie iOS gemacht habe. Als ich Activity mit dem gleichen Gefühl wie ViewController verwendete, war es wirklich fehlerhaft. Aktivität und Fragment sterben so oft. Es fühlt sich unangenehm an, eine Liste im Adapter zu haben, aber ich denke, dass dies nicht geholfen werden kann.

Ich habe diesen Artikel geschrieben, weil ich wollte, dass mir jemand eine Meinung gibt. Ich würde mich freuen, wenn Sie mir eine Meinung geben könnten. Wenn Sie der Meinung sind, dass dies das stärkste Design ist, versuchen Sie bitte, eine App mit den oben genannten Spezifikationen zu erstellen.

Wenn Sie Lust dazu haben, werde ich versuchen, es mit Kotlin zu machen. Ich denke, dass Kotlin heutzutage der Mainstream ist ...

Recommended Posts

Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe versucht, mit Java zu interagieren
Ich habe jetzt versucht, Java 8 zusammenzufassen
Ich habe versucht, innerhalb von 3 Monaten einen Antrag von unerfahren zu stellen
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Ich habe versucht, eine Anwendung in 2 Sprachen zu entwickeln
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe versucht, ein automatisches Backup mit angenehmem + PostgreSQL + SSL + Docker zu erstellen
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 3 ~ Übung ~ erstellt
Ich habe versucht, TCP / IP + BIO mit JAVA zu implementieren
[Java 11] Ich habe versucht, Java auszuführen, ohne mit Javac zu kompilieren
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, Sterling Sort mit Java Collector zu implementieren
Anfänger in der App-Entwicklung haben versucht, eine Android-Rechner-App zu erstellen
Rails6 Ich habe versucht, Docker in eine vorhandene Anwendung einzuführen
[Android] Ich habe mit ListView + Bottom Sheet einen Materiallistenbildschirm erstellt
Ich habe eine Android-App erstellt, die mit HTTP abgerufen wird
~ Ich habe jetzt versucht, funktionale Programmierung mit Java zu lernen ~
Ich habe nc (netcat) normalerweise mit JAVA gemacht
[Azure] Ich habe versucht, eine kostenlose Java-App zu erstellen ~ Mit FTP verbinden ~ [Anfänger]
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, Ben zu einer leicht verständlichen GIF-Animation zu machen
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich habe versucht, Java Optional und Guard-Klausel koexistieren zu lassen
So erstellen Sie eine App mit Tensorflow mit Android Studio
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, die CameraX-Bibliothek mit Android Java Fragment zu verwenden
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Führen Sie in Java8 geschriebene Anwendungen in Java6 aus
Einfacher LINE BOT mit Java Servlet Teil 2: Ich habe versucht, Bildnachrichten und Vorlagen zu erstellen
Ich war süchtig nach WSl, als ich versuchte, mit Vue.js eine Entwicklungsumgebung für Android-Anwendungen zu erstellen
Ich habe versucht, mithilfe von JDBC Template mit Spring MVC eine Verbindung zu MySQL herzustellen
Ich habe versucht, mit Eclipse + Tomcat eine http2-Entwicklungsumgebung zu erstellen
Ich habe versucht, mithilfe von Routing-Verschachtelung eine beliebige URL zu erstellen
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Ich möchte eine ios.android App machen
Ich habe versucht, Java-Lambda-Ausdrücke zusammenzufassen
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, OpenCV mit Java + Tomcat zu verwenden
Nachdem ich Progate gelernt hatte, versuchte ich, eine SNS-Anwendung mit Rails in der lokalen Umgebung zu erstellen
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Java-Anfänger haben versucht, mit Spring Boot eine einfache Webanwendung zu erstellen
01. Ich habe versucht, eine Umgebung mit SpringBoot + IntelliJ + MySQL (MyBatis) (Windows 10) zu erstellen.
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
So erstellen Sie eine App mit einem Plug-In-Mechanismus [C # und Java]
Ich habe versucht, eine Anwendung für maschinelles Lernen mit Dash (+ Docker) Teil 1 ~ Umgebungskonstruktion und Funktionsprüfung ~ zu erstellen
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, Anmeldeinformationen mit JMX zu verwalten
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen