Hallo, Android-Multiscreen: Ausführliche Erläuterungen

In diesem zweiteiligen Leitfaden wird die grundlegende Phoneword-Anwendung erweitert, die Sie im Leitfaden „Hallo, Android“ erstellt haben, um einen zweiten Bildschirm behandeln zu können. Dabei werden die grundlegenden Bausteine für die Android-Anwendung eingeführt. Es ist ein tieferer Einblick in die Android-Architektur enthalten, damit Sie sich ein besseres Bild der Android-Anwendungsstruktur und -Funktionen machen können.

Im Schnellstart des Hallo, Android-Multiscreens haben Sie Ihre erste Xamarin.Android-Multiscreen-Anwendung erstellt und ausgeführt.

In dieser Anleitung lernen Sie die erweiterte Android-Architektur kennen. Die Android-Navigation mit Intents wird erläutert und Android-Hardware-Navigationsoptionen werden untersucht. Neue Erweiterungen der Phoneword-Anwendung werden zerlegt, wenn Sie eine ganzheitliche Sicht der Anwendungsbeziehung mit dem Betriebssystem und anderen Anwendungen entwickeln.

Grundlagen der Android-Architektur

In Hallo, Android: Ausführliche Erläuterungen haben Sie gelernt, dass Android-Anwendungen eindeutige Programme sind, weil sie nicht über einen einzigen Einstiegspunkt verfügen. Stattdessen startet das Betriebssystem (oder eine andere Anwendung) eine der registrierten Aktivitäten für die Anwendung, wodurch wiederum der Prozess für die Anwendung gestartet wird. Diese ausführlichen Erläuterungen der Android-Architektur erweitert Ihr Verständnis der Bauweise von Android-Anwendungen durch die Einführung der Android-Anwendungsbausteine und deren Funktionen.

Android-Anwendungsbausteine

Eine Android-Anwendung besteht aus einer Sammlung spezieller Android-Klassen namens Anwendungsblöcke , die zusammen mit einer beliebigen Anzahl von App-Ressourcen gebündelt sind – Bilder, Designs, Hilfsklassen usw. – diese werden durch eine XML-Datei namens Android Manifest koordiniert.

Anwendungsblöcke bilden das Rückgrat von Android-Anwendungen, da mit ihnen Aktionen ausgeführt werden können, die Sie normalerweise mit einer normalen Klasse nicht bewältigen könnten. Die beiden wichtigsten sind Aktivitäten und Dienste:

  • Aktivität : Eine Aktivität entspricht einem Bildschirm mit einer Benutzeroberfläche und ähnelt konzeptionell einer Webseite in einer Webanwendung. Beispielsweise wäre der Anmeldebildschirm in einer Newsfeedanwendung die erste Aktivität, die scrollbare Liste der Nachrichtenelemente wäre eine andere Aktivität und die Detailseite für jedes Element wäre eine dritte. Weitere Informationen zu Aktivitäten finden Sie im Handbuch Activity Lifecycle (Aktivitätslebenszyklus).

  • Dienst – Android Services unterstützen Aktivitäten, indem Sie Aufgaben mit langer Ausführungszeit übernehmen und im Hintergrund ausführen. Dienste verfügen über keine Benutzeroberfläche und werden verwendet, um Aufgaben zu behandeln, die nicht an Bildschirme gebunden sind, z. B. das Wiedergeben eines Songs im Hintergrund oder das Hochladen von Fotos auf einen Server. Weitere Informationen zu Diensten finden Sie in den Handbüchern Creating Services (Erstellen von Diensten) und Android Services (Android-Dienste).

Eine Android-Anwendung verwendet möglicherweise nicht alle Typen von Bausteinen und verfügt oft über mehrere Bausteine eines bestimmten Typs. Die Phoneword-Anwendung aus dem Hallo, Android-Schnellstart besteht beispielsweise aus nur einer Aktivität (Bildschirm) und einigen Ressourcendateien. Eine einfache Musik-Player-App verfügt möglicherweise über mehrere Aktivitäten und einen Dienst für die Wiedergabe von Musik, wenn die App im Hintergrund ausgeführt wird.

Absichten

Ein anderes grundlegendes Konzept in Android-Anwendungen nennt sich Intent. Android basiert auf dem Prinzip der geringsten Rechte : Anwendungen haben nur Zugriff auf die Blöcke, die sie benötigen, um zu funktionieren, und sie haben eingeschränkten Zugriff auf die Blöcke, aus denen das Betriebssystem oder andere Anwendungen bestehen. Ähnlich sind Blöcke lose gekoppelt – sie sind so konzipiert, dass sie nur wenig Wissen über andere Blöcke und eingeschränkten Zugriff auf andere Blöcke haben (auch Blöcke, die Teil derselben Anwendung sind).

Anwendungsbausteine senden zur Kommunikation asynchrone Nachrichten, so genannte Intents, hin und her. Intents enthalten Informationen zum empfangenden Block und manchmal einige Daten. Ein Intent, der von einer App-Komponente gesendet wird, führt dazu, das etwas in einer anderen App-Komponente geschieht, wodurch die beiden Komponenten der App verbunden werden, und es ihnen ermöglicht wird, zu kommunizieren. Durch das Hin-und-her-Senden von Intents können Bausteine komplexe Aktionen koordinieren. Dazu gehören beispielsweise der Start der Kamera-App zum Erstellen und Speichern, die Erfassung von Speicherortinformationen oder die Navigation von einem Bildschirm zum nächsten.

AndroidManifest.XML

Beim Hinzufügen eines Bausteins zur Anwendung wird er mit einer speziellen XML-Datei namens Android-Manifest registriert. Das Manifest verfolgt alle Anwendungsblöcke in einer Anwendung sowie Versionsanforderungen, Berechtigungen und verknüpfte Bibliotheken nach – alles, was das Betriebssystem wissen muss, damit Ihre Anwendung ausgeführt werden kann. Das Android-Manifest arbeitet auch mit Aktivitäten und Intents zusammen, um zu steuern, welche Aktionen für eine bestimmte Aktivität geeignet sind. Die erweiterten Funktionen des Android-Manifests finden Sie im Handbuch Working with the Android Manifest (Arbeiten mit dem Android-Manifest).

In der Version für einen Bildschirm der Phoneword-Anwendung wurden nur eine Aktivität, ein Intent, und die AndroidManifest.xml, zusammen mit zusätzlichen Ressourcen wie Symbolen, verwendet. In der Version mit mehreren Bildschirm von Phoneword wurde eine zusätzliche Aktivität hinzugefügt. Sie wurde von der ersten Aktivität mit einer Intent-Absicht gestartet. Im nächsten Abschnitt wird erklärt, wie Intents bei der Erstellung der Navigation in Android-Anwendungen helfen.

Android-Navigation

Intents wurden für die Navigation zwischen den Bildschirmen verwendet. Es ist Zeit, sich diesen Code anzusehen, um herauszufinden, wie Intents arbeiten und ihrer Rolle in der Android-Navigation zu verstehen.

Starten einer zweiten Aktivität mit einer Absicht

In der Phoneword-Anwendung wurde ein Intent verwendet, um einen zweiten Bildschirm (Aktivität) zu starten. Beginnen Sie mit dem Erstellen einer Absicht, und übergeben Sie den aktuellen Kontext (thisbezieht sich auf den aktuellen Kontext) und den Typ des Anwendungsblocks, nach dem Sie suchen (TranslationHistoryActivity):

Intent intent = new Intent(this, typeof(TranslationHistoryActivity));

Der Kontext ist eine Schnittstelle zu globalen Informationen über die Anwendungsumgebung . Dadurch können neu erstellte Objekte wissen, was mit der Anwendung vor sich geht. Wenn Sie sich einen Intent als Nachricht vorstellen, stellen Sie den Namen des Empfängers der Nachricht (TranslationHistoryActivity) und die Adresse des Empfängers (Context) bereit.

Android bietet eine Option zum Anfügen einfacher Daten an einen Intent (komplexe Daten werden anders behandelt). Im Phoneword-Beispiel wird PutStringArrayExtra verwendet, um eine Liste von Telefonnummern zum Intent hinzuzufügen, und StartActivity wird auf dem Empfänger des Intent aufgerufen. Der fertige Code sieht wie folgt aus:

translationHistoryButton.Click += (sender, e) =>
{
    var intent = new Intent(this, typeof(TranslationHistoryActivity));
    intent.PutStringArrayListExtra("phone_numbers", _phoneNumbers);
    StartActivity(intent);
};

Zusätzliche in Phoneword eingeführte Konzepte

Die Phoneword-Anwendung enthält weitere Konzepte, die jedoch nicht in diesem Leitfaden behandelt werden. Dies sind z.B. folgende Konzepte:

Zeichenfolgenressourcen : In der Phoneword-Anwendung wurde der Text von TranslationHistoryButton auf "@string/translationHistory"festgelegt. Die @string-Syntax bedeutet, dass der Wert der Zeichenfolge, in der ZeichenfolgenressourcendateiStrings.xml gespeichert ist. Der folgende Wert für die translationHistory-Zeichenfolge wurde zu Strings.xml hinzugefügt:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="translationHistory">Call History</string>
</resources>

Weitere Informationen zu den Zeichenfolgenressourcen und anderen Android-Ressourcen finden Sie im Android-Ressourcenhandbuch.

ListView und ArrayAdapter : Eine ListView ist eine Ui-Komponente, die eine einfache Möglichkeit bietet, eine Scrollliste mit Zeilen darzustellen. Ein ListView instance erfordert einen Adapter, um ihn mit Daten zu füttern, die in Zeilenansichten enthalten sind. Die folgende Codezeile wurde verwendet, um die Benutzeroberfläche von TranslationHistoryActivity aufzufüllen:

this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);

Listenansichten und Adapter sind nicht Gegenstand dieses Dokuments, aber sie werden sehr umfassend im Handbuch ListViews and Adapters (ListViews und Adapter) behandelt. Auffüllen von ListView mit Daten behandelt insbesondere die integrierten ListActivity- und ArrayAdapter-Klassen zum Erstellen und Auffüllen einer ListView ohne die Definition eines benutzerdefinierten Layouts, wie im Beispiel Phoneword erfolgt.

Zusammenfassung

Herzlichen Glückwunsch, Sie haben die erste Android-Multiscreen-Anwendung fertiggestellt! In diesem Handbuch wurden Android-Anwendungsbausteine und Intents eingeführt, und sie wurden zum Erstellen einer Android-Multiscreen-Anwendung verwendet. Mit diesem soliden Grundwissen können Sie jetzt mit der Entwicklung Ihrer eigenen Xamarin.Android-Anwendungen beginnen.

Als Nächstes lernen Sie das Erstellen von plattformübergreifenden Anwendungen mit Xamarin im Handbuch Building Cross-Platform Applications guides (Erstellen von plattformübergreifenden Anwendungen).