5. Service: Hintergrundprozess ohne UI
Service ist eine wesentliche Komponente in einer Android-App, mit der Sie Aufgaben im Hintergrund ohne Benutzeroberfläche ausführen können. Service eignet sich ideal für Aufgaben, die auch dann ausgeführt werden müssen, wenn die App nicht verfügbar ist, z. B. Musikstreaming, Datensynchronisierung oder Standortaktualisierungen.
Durch die Verwendung von Service können Sie sicherstellen, dass Ihre App auch dann ordnungsgemäß funktioniert, wenn Benutzer nicht direkt mit der App interagieren.
Arten von Dienstleistungen
Service kann in zwei Haupttypen unterteilt werden:
1. Started Service
Started Service ist ein Typ von Service, der von einer anderen Komponente gestartet wird, z. B. Activity oder Broadcast Receiver, und so lange ausgeführt wird, bis die Aufgabe abgeschlossen ist.
So funktioniert’s:
- Started Service beginnt mit dem Aufruf der startService()-Methode.
- Service wird im Hintergrund ausgeführt, bis die Aufgabe abgeschlossen oder manuell gestoppt wird.
- Sobald die Aufgabe abgeschlossen ist, wird der Service automatisch gestoppt.
Beispiel-Code:
Intent intent = new Intent(this, MyStartedService.class);
startService(intent);
2. Bound Service
Bound Service ist ein Typ von Service, der an andere Komponenten gebunden wird, z. B. Activity oder Fragment, und so lange ausgeführt wird, wie diese Komponenten aktiv sind.
So funktioniert’s:
- Bound Service beginnt mit dem Aufruf der bindService()-Methode.
- Service wird so lange ausgeführt, wie Komponenten daran angehängt sind.
- Wenn alle Komponenten die Bindung lösen, stoppt der Service automatisch.
Beispiel-Code:
Intent intent =new Intent(this, MyBoundService.class);
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
Der Unterschied zwischen gestartetem Dienst und gebundenem Dienst
Aspekte | Started Service | Bound Service |
Wie man anfängt | Beginnend mit startService(). | Beginnend mit bindService(). |
Dauer | Wird ausgeführt, bis die Aufgabe abgeschlossen oder gestoppt ist. | Wird so lange ausgeführt, wie Komponenten angefügt sind. |
Kommunikation | Es kann nicht direkt mit anderen Komponenten kommuniziert werden. | Kann direkt mit geklebten Bauteilen kommunizieren. |
Anwendungsbeispiele | Musikstreaming, Datensynchronisierung. | Musikplayer, Echtzeit-Kommunikation. |
Beispiele für die Nutzung von Diensten in Anwendungen
1. Musik-Apps:
- Started Service: Spielen Sie Musik im Hintergrund ab, wenn die App inaktiv ist.
- Bound Service: Steuern Sie die Wiedergabe von Musik von Activity oder Fragment.
2. Sport-Apps:
- Started Service: Verfolgt den Standort des Benutzers beim Laufen oder Radfahren.
- Bound Service: Zeigt Echtzeit-Standort- und Geschwindigkeitsdaten auf dem Activity an.
3. Chat-App:
- Started Service: Senden und Empfangen von Nachrichten im Hintergrund.
- Bound Service: Zeigt neue Nachrichten in Echtzeit auf Activity an.
6. Content Provider: Datenaustausch zwischen Anwendungen
Content Provider ist eine wesentliche Komponente in Android-Apps, die es Apps ermöglicht, Daten mit anderen Apps zu teilen. Mit Content Provider können Sie anderen Apps Zugriff auf die Daten Ihrer App gewähren, z. B. Kontaktlisten, Mediendateien oder Datenbanken.
Content Provider ermöglicht Ihrer App auch den Zugriff auf Daten aus anderen Apps, z. B. den Zugriff auf die Kontaktliste oder Fotogalerie eines Benutzers.
So verwenden Sie Content Provider
Content Provider bietet eine standardisierte Schnittstelle für den Zugriff auf und die Manipulation von Daten. Der Datenzugriff erfolgt über URI (Uniform Resource Identifier) die durch die Content Provider definiert sind.
1. Zugriff auf Daten von Content Provider
Um auf Daten aus dem Content Provider zuzugreifen, müssen Sie die entsprechenden ContentResolver und URI verwenden.
Beispiel für den Zugriff auf eine Kontaktliste:
Uri uri =ContactsContract.Contacts.CONTENT_URI;
Cursor cursor =getContentResolver().query(uri, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String name cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Log.d(“Contact”, name);
}
cursor.close();
}
2. Hinzufügen, Ändern oder Löschen von Daten
Sie können Daten auch über Content Provider mit ContentResolver hinzufügen, ändern oder löschen.
Hinzufügen von Daten:
ContentValues values = new ContentValues();
values.put(ContactsContract.Contacts.DISPLAY_NAME, “John Doe”);
Uri newContactUri =getContentResolver().insert(ContactsContract.Contacts.CONTENT_URI, values);
Ändern von Daten:
ContentValues values = new ContentValues();
values.put(ContactsContract.Contacts.DISPLAY_NAME, “Jane Doe”);
getContentResolver().update(ContactsContract.Contacts.CONTENT_URI, values, null, null);
Löschen von Daten:
getContentResolver().delete(ContactsContract.Contacts.CONTENT_URI, null, null);