Blog

Android Paket Synergie

Arno den Hond

Aktualisiert Oktober 22, 2025
4 Minuten

Anders als in meinem letzten Beitrag angekündigt, geht es in diesem Beitrag weder um ein baldiges noch um ein überraschendes Thema. Es geht um einen allgemeinen Aspekt von Android, der meiner Meinung nach sehr leistungsfähig ist, aber oft nicht ausreichend genutzt wird.Android-Apps sind nicht monolithisch, sondern eher eine Sammlung von Komponenten unterschiedlicher Art. Ich vermute, dass Android sich vom Konzept der Midlet-Suiten in j2me inspirieren ließ und dieses Konzept sehr gut weiterentwickelt hat.Diese Komponenten (mit Ausnahme des Providers) können über Intent-Filter im Manifest des Pakets offengelegt und von anderen Komponenten in anderen Paketen verwendet werden. Auf diese Weise können Anwendungen gemeinsam Aufgaben erledigen, die eine einzelne Anwendung niemals bewältigen könnte.

Der wichtigste Komponententyp ist die Aktivität, und sie kann auf verschiedene Weise verwendet werden:

  • Blatt: In den Extras der aufrufenden Absicht angegebene oder referenzierte Ansichtsdaten.
  • Put: ein vorausgefülltes Formular mit Daten aus den Extras. Führt eine Aktion aus und hält dann an oder kehrt zurück.
  • Pick: Wählen Sie Daten aus einer Quelle, die einer anderen Anwendung gehört, und geben Sie sie (oder einen Verweis darauf) an die aufrufende Aktivität zurück.

Da Aktivitäten andere Aktivitäten in anderen Aufgaben starten können, muss darauf geachtet werden, dass ein konsistenter Aktivitäten-Backstack erhalten bleibt. Image Shortcut und Send Text demonstrieren die Verwendung dieser Intents (aber eine abnormale Verwendung des Content Providers) Der Komponententyp, der sich am besten zur Steigerung der Synergie eignet, ist vielleicht der Content Provider. Auf einen Content Provider wird über einen Content Resolver zugegriffen und er kann zum Suchen, Lesen und Aktualisieren von Daten verwendet werden, die zu einem anderen Paket gehören. Eine Komponente kann sich auch beim Content Provider registrieren, um über Änderungen an ihrem Datensatz benachrichtigt zu werden.Um eine Nachricht an ein anderes Paket zu senden, wird ein Broadcast Receiver verwendet.Das System sendet auch eine Reihe von Nachrichten, die Anwendungen abhören können.Das Senden eines Broadcast Intent kann asynchron oder synchron erfolgen, so dass Sie für jeden passenden Empfänger ein Ergebnis erhalten und diese in der Reihenfolge ihrer Priorität aufrufen können.In jedem Fall ist ein Broadcast Receiver nicht der Ort, an dem viel verarbeitet wird. In der Regel wird entweder ein Dienst gestartet, um Daten zu verarbeiten, oder es wird eine Benachrichtigung ausgelöst, damit der Benutzer aktiv werden kann. Der letzte Komponententyp ist ein Dienst. Wie der Name schon sagt, läuft er im Hintergrund und es gibt ihn in den Varianten "einmal ausführen und sterben" und "einmal erstellen und dann nach Bedarf ausführen". Ein Dienst kann über einen Binder gebunden werden und kommuniziert über aidl. Ich denke, dass neben dem Egoismus auch die Angst vor Missbrauch ein Faktor ist, der Synergien verhindert. Sie können zwar Berechtigungen erstellen und diese für Ihre Komponenten festlegen, so dass andere Apps diese Berechtigungen anfordern müssen, bevor sie Ihre Komponenten verwenden können, aber manche Benutzer überprüfen die angeforderten Berechtigungen möglicherweise nicht, wenn sie eine potenziell bösartige App installieren. Ich entwickle derzeit eine Android-App für eine Bank, die eine Komponente enthält (die derzeit nicht offengelegt wird), mit der ein Benutzer Geld von seinem Konto überweisen kann. Wenn die Aktivität offengelegt würde, könnte sie als Teil des Zahlungsprozesses in jeder Shopping-App verwendet werden. Die Überweisungsaktivität würde den Betrag und das Zielkonto erhalten, die durch die von der Shopping-App festgelegten Extras vorausgefüllt werden. Die Überweisungsaktivität könnte ein Cookie an die Shopping-App zurückgeben (ähnlich wie bei Pick), das diese selbständig mit dem Server der Bank abgleichen kann.Natürlich sollte die Shopping-App nicht für jede Banking-App das Telefon scannen müssen. Daher muss ein gemeinsames Profil der unterstützten Komponenteninteraktionen für jede Art von Aufgabe definiert werden. Dies würde es der Shopping-App ermöglichen, eine iDeal-Schaltfläche anzuzeigen, die einen Intent aufruft, der dem Filter der Überweisungskomponente jeder installierten Banking-App im Drive-Through-Modus entspricht. 'Das Ganze ist mehr als die Summe seiner Teile' Aristoteles, Metaphysica

Verfasst von

Arno den Hond

Contact

Let’s discuss how we can support your journey.