Ein paar Dinge zu Kaleb Antwort hinzuzufügen:
Contentprovider:
Android hat tatsächlich viele Möglichkeiten, Daten zu teilen. Der ContentProvider ist eine Möglichkeit, eine Datenbank zwischen Anwendungen freizugeben. Nehmen wir an, Sie haben 3 E-Mail-Clients auf Ihrem Telefon, die Daten aus der Cloud zwischenspeichern, falls Sie offline sind. Es macht Sinn, dass Sie nur eine Offline-Datenbank Ihrer E-Mails pflegen. Das gleiche gilt, wenn Sie ein Adressbuch, eine SMS-Datenbank oder eine Tweet-Datenbank haben. Und das gleiche gilt, wenn Sie alle diese Daten aktualisieren möchten. Sie möchten diese Daten nur einmal aus der Cloud aktualisieren, nicht jedes Mal dreimal, was mich zum nächsten Thema, dem SyncAdapter, bringt.
SyncAdapter:
A SyncManager ist intelligent genug, um alle Synchronisierungsanforderungen in einem Rutsch zu tun, um die Zeit zu minimieren, die Antenne mit Strom versorgt wird und damit Batterieverbrauch zu sparen. Außerdem kann der Benutzer des Telefons mit Hilfe des AccountManagers die Synchronisierungseinstellungen selbst überschreiben, aber nur, wenn der Entwickler sich dafür entschieden hat, einen SyncAdapter zu verwenden.
Außerdem kann ein SyncAdapter nur mit einem ContentProvider verwendet werden. Selbst wenn Sie Ihre Daten nicht mit anderen Apps teilen möchten, müssen Sie einen Content-Provider verwenden, wenn Sie einen SyncAdapter verwenden möchten.
Das gesagt, ContentProvider sind sehr schwer für Anfänger (auch für fortgeschrittene Entwickler) zu implementieren. Ich würde vorschlagen, dass du dich vorerst von ihnen fernhältst. Sie sollten einen ContentProvider verwenden, wenn es bereits einen für das gibt, was Sie tun möchten, aber ich empfehle nicht, dass Sie versuchen, einen eigenen zu erstellen.
Lader:
Lader sind gut. Lernen Sie, sie zu verwenden, wenn Sie Daten von einer lokalen Datenbank (oder von einem ContentProvider) anzeigen möchten. Sie sparen Ihnen Zeit. Anders als der SyncAdapter benötigen Loader keinen ContentProvider, damit sie funktionieren. Sie können direkt auf SQLite zugreifen.
Dienstleistungen:
lernen, sie zu benutzen. Es gibt zu viele Dinge über sie zu sagen. Ein wichtiger Punkt ist, dass Sie die Zeit, in der sie am Leben bleiben, minimieren sollten, indem Sie Komponenten wie AlarmManager oder BroadcastReceiver verwenden. Außerdem müssen Sie den Unterschied zwischen einem Service und einem IntentService kennenlernen.
AsyncTask:
AsyncTask ist sehr oft notwendig, in Android zu vermeiden, dass der Haupt-UI-Thread zu blockieren. Glauben Sie nicht, dass Sie, weil Sie eine AsyncTask verwenden, auf die Verwendung von Services verzichten können.
Beachten Sie, dass viele Android-Tutorials Ihnen nur die minimale Menge an Code zur Verfügung stellen, um ein Konzept zu demonstrieren, so dass sie oft das richtige Threading überspringen.Beachten Sie, dass Sie Ihren eigenen Thread manuell starten können, wenn Sie möchten, aber AsyncTask macht andere Dinge für Sie, die es zur idealen Wahl für viele Situationen machen, in denen der UI-Thread blockiert wird und Sie einen "Application Non Responding" -Fehler erhalten.
Bibliotheken:
Es gibt viele gute Bibliotheken gibt. Ich werde nicht sagen, welche die Guten sind. Lerne, die zu verwenden, die jeder empfiehlt. Diese Bibliotheken können eine Menge für Sie tun (vorausgesetzt, Sie sind gut genug, um sie zum Laufen zu bringen). Es gibt ein bisschen eine Lernkurve, aber es ist es wert. Und sie arbeiten mit Android auf einer viel höheren Ebene der Abstraktion, so dass normalerweise das Threading und viele andere Dinge für dich erledigt werden.
Es gibt viele andere Dinge, die ich beschönige, oder die ich überhaupt nicht erwähnt habe, aber wie gesagt, ich denke deine Frage ist zu weit gefasst. Und wenn Sie wirklich mehr Details wünschen, sollten Sie die Entwicklerhandbücher durchsuchen und einige der von Google bereitgestellten YouTube-Videos ansehen.
Ihre Frage ist zu breit. Bitte grenzen Sie ihn ein, indem Sie einen tatsächlichen Anwendungsfall angeben, den Sie implementieren möchten. –
Vielen Dank für die Antwort @StephanBranczyk. Ich wollte nur eine klare Vorstellung davon, in welchen Szenarien, was wäre der beste Ansatz zu verwenden. Nehmen wir an, eine App für die Wettervorhersage, kann ich auch aynctask für Wetter-API oder Service verwenden. Zum Zweck der Zwischenspeicherung kann ich SQLLite oder Bibliotheken wie Volley verwenden. Und Content-Provider für die Abfrage und alle anderen Zwecke. Loader für Aysnc Laden von Daten und Anhören der Datenquelle ändern Sie es gebunden. Ich bin nur neugierig, wie man all diese Dinge in eine für bessere Lösung einkapseln kann. Entschuldigen Sie, ich bin nur verwirrt darüber. – Ritesh
Hier sind Infografiken, die Ihnen helfen könnten, besser zu verstehen :) dritte Option sind Dienste: https://raw.githubusercontent.com/stephanenicolas/robospice/master/gfx/RoboSpice-InfoGraphics.png – Kalem