Android Services Tutorial: Wie führe ich eine Anwendung im Hintergrund aus?



Dieses Android Services-Tutorial hilft Ihnen zu verstehen, wie Sie Vorgänge im Hintergrund ausführen, z. B. Musik abspielen. Es ist keine Benutzeroberfläche angehängt

Wenn Sie häufig mehrere Anwendungen auf Ihrem Smartphone verwenden, möchten Sie möglicherweise von einer Anwendung zur anderen wechseln, aber auch sicherstellen, dass alle Ihre Anwendungen im Hintergrund aktiv bleiben. Dies sind nichts anderes als die von angebotenen Dienstleistungen . In diesem Artikel zum Tutorial für Android-Dienste erfahren Sie, wie Sie mit den Diensten arbeiten.

wie man Strings in Python umkehrt

Ich werde die folgenden Themen behandeln:





Was sind Android-Dienste?

Service ist im Grunde ein Prozess. Android-Dienst ist eine Komponente, die im Hintergrund ausgeführt wird, um eine Leistung zu erbringenLangzeitvorgänge ohne Interaktion mit dem Benutzer und es funktioniert auch, wenn die Anwendung zerstört wird.Eine andere Anwendungskomponente kann einen Dienst starten und wird auch dann im Hintergrund ausgeführt, wenn Sie zu einer anderen Anwendung wechseln.

Darüber hinaus kann sich eine Komponente an einen Dienst binden, um mit ihm zu interagieren und auch eine Interprozesskommunikation durchzuführen.



Hinweis: Der android.app.Service ist eine Unterklasse der ContextWrapper-Klasse, und der Android-Dienst ist kein Thread oder separater Prozess.

Android-Services Lebenszyklus

Der Lebenszyklus von Android-Diensten kann zwei Arten von Diensten haben. Der Lebenszyklus eines Dienstes folgt zwei verschiedenen Pfaden:

  1. Gestartet
  2. Gebunden

Gestartet



Ein Dienst wird gestartet, wenn eine Anwendungskomponente aufgerufen wird startService() Methode. Nach dem Start kann ein Dienst unbegrenzt im Hintergrund ausgeführt werden, selbst wenn die für den Start verantwortliche Komponente zerstört wird. Es wird mit dem gestoppt Dienst anhalten () Methode. Der Dienst kann sich auch durch Aufrufen von stoppen stopSelf () Methode.

Gebunden

Ein Dienst wird gebunden, wenn eine Anwendungskomponente durch Aufrufen an ihn gebunden wird bindService () . Der gebundene Dienst bietet eine Client-Server-Schnittstelle, über die Komponenten mit dem Dienst interagieren, Anforderungen senden und Ergebnisse abrufen können. Es verarbeitet die prozessübergreifende Kommunikation (IPC). Der Client kann den Dienst durch Aufrufen von aufheben unbindService () Methode.

Android Service Lifecycle- Android Services Tutorial- Edureka

Fahren wir mit dem nächsten Abschnitt dieses Artikels über Android-Dienste fortMethoden unter der Serviceklasse.

Android Services Tutorial: Methoden

Es gibt einige Methoden, mit denen Sie problemlos Vorgänge für jede Anwendung ausführen können. Einige von ihnen sind:

MethodeBeschreibung
onStartCommand ()

Diese Methode wird aufgerufen, wenn eine andere Komponente, z. B. eine Aktivität, den Aufruf des Dienstes durch Aufrufen anfordert startService() .

Es liegt in Ihrer Verantwortung, den Dienst zu beenden, wenn die entsprechenden Arbeiten mithilfe von ausgeführt werden stopSelf () oder Dienst anhalten () Methoden.

aufheben ()

Ruft diese Methode auf, wenn eine andere Komponente durch Aufrufen eine Verbindung zum Dienst herstellen möchte bindService () .

Um dies zu implementieren, müssen Sie eine Schnittstelle bereitstellen, die Clients verwenden, um mit dem Dienst zu kommunizieren. Es wird ein zurückgegeben IBinder Objekt. Wenn Sie die Bindung nicht zulassen möchten, kehren Sie zurück Null .

onUnbind ()

Das System ruft diese Methode auf, wenn alle Clients von einer bestimmten vom Dienst veröffentlichten Schnittstelle getrennt sind.

onRebind ()

Ruft diese Methode auf, wenn neue Clients mit dem Dienst verbunden werden, nachdem zuvor mitgeteilt wurde, dass alle Verbindungen getrennt wurden onUnbind (Absicht) .

onCreate ()

Das System ruft diese Methode auf, wenn der Dienst zum ersten Mal mit erstellt wird onStartCommand () oder aufheben () . Es ist eine einmalige Einrichtung erforderlich.

onDestroy ()

Diese Methode wird aufgerufen, wenn der Dienst nicht mehr verwendet wird und zerstört wird. Ihr Dienst sollte dies implementieren, um Ressourcen wie Threads, registrierte Listener, Empfänger usw. zu bereinigen.

Skelettcode

public class MainActivity erweitert Activity {privater TextView textView privater BroadcastReceiver-Empfänger = neuer BroadcastReceiver () {@Override public void onReceive (Kontextkontext, Absichtserklärung) {Bundle bundle = intent.getExtras () if (Bundle! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Download abgeschlossen. Download URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('Download erledigt')} else {Toast.makeText (MainActivity.this, 'Download fehlgeschlagen', Toast.LENGTH_LONG) .show () textView.setText ('Download fehlgeschlagen')}}}} @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override protected void onResume () {super.onResume ( ) registerReceiver (Empfänger, neuer IntentFilter (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (Empfänger)} public void onClick (Ansichtsansicht) {Intent intent = new Intent (this, DownloadService.class) // Infos für den Dienst hinzufügen, welche Datei heruntergeladen werden soll und wohin store intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Service gestartet')}}

In diesem Beispiel sehen Sie die Methoden wie onCreate () , auf Wiederaufnahme () , onPause () . Diese Methoden bilden die Struktur der Dienste in Android.

Kommen wir nun zum praktischen Teil dieses Android Services-Tutorialswie man einen Dienst erstellt und damit umgeht.

Demo

Mal sehen, wie man im Hintergrund Musik spielt. Dazu verwende ich Andriod Studio .

Schritt 1

Erstellen Sie ein neues leeres Projekt. Benennen Sie Ihr Projekt und klicken Sie auf den Java-Ordner und dann auf den Hauptaktivität . Zuerst hinzufügen MediaPlayer Damit Sie die Player-Details wie Start importieren können, stellen Sie die Schleife ein und so weiter.

Paket com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity öffentliche Klasse MainActivity erweitert AppCompatActivity {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activitylayer) (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Hinweis: Wenn Sie es zum ersten Mal verwenden, vergessen Sie nicht, das BIOS zu aktivieren. Sie können dies tun, indem Sie Ihr System neu starten.

Sie müssen ein virtuelles Gerät hinzufügen. Klicken Sie einfach auf Öffnen Sie den AVD-Manager.

Wählen Sie ein Gerät Ihrer Wahl und schon kann es losgehen!

Dies wird nur ausgeführt, wenn der Bildschirm aktiv ist. Damit diese Anwendung auch im Hintergrund funktioniert, müssen Sie ein paar weitere Codezeilen hinzufügen activity_main.xml Datei.

Schritt 2

Sobald Sie den entsprechenden Code ausgeführt haben, können Sie die Anwendung ausführen und die Musik im Hintergrund abspielen, d. H. Wenn eine andere Anwendung geöffnet ist, wird dieses Audio weiterhin abgespielt.

Mal sehen, wie das geht.

  • Erstellen Sie eine weitere Klasse im Java-Ordner und benennen Sie sie. Hier habe ich es ' MyService '.
  • Diese Klasse erweitert die Service-Klasse.
  • Sobald Sie die Service-Klassenmethoden haben, implementieren Sie die Methoden, indem Sie auf klicken alt + Enter.
  • Danach müssen Sie die Methoden überschreiben. Klicken Sie also mit der rechten Maustaste auf das Fenster, um die Optionen anzuzeigen.
  • Generieren Sie die Überschreibungsmethoden, wählen Sie onStartCommand () , und OnDestroy ().
  • Bearbeiten Sie die onStartCommand () Methoden durch Hinzufügen des folgenden Codes :.
MediaPlayer player = MediaPlayer.create (dies, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Hinweis: Löschen Sie diesen Code in der Hauptaktivität.

  • Dies führt zu einem Fehler, in dem Sie aufgefordert werden, die Anweisung zu entfernen. Entfernen Sie also die return-Anweisung und deklarieren Sie MediaPlayer als private Methode und geben Sie return zurück START_STICKY . Dies gibt den Startstatus zurück.
  • Hinzufügen player.stop () in dem onDestroy () Methode.

Schritt 3

Gehe zu Rindfleisch und gehen Sie zu Layouts, klicken Sie auf android_main.xml um die XML-Datei der Anwendung zu erhalten.

  • Entfernen Sie die Textansicht, ersetzen Sie sie durch das LinearLayout und fügen Sie Schaltflächen hinzu. Fügen Sie den entsprechenden Code hinzu.
<LinearLayout Android:Orientierung= 'vertikal' Android: layout_width= 'match_parent' Android: layout_height= 'wrap_content' Android: layout_centerVertical= 'wahr' Werkzeuge:ignorieren= 'MissingConstraints'><Taste Android:Ich würde= '@ + id / buttonStart' Android:Text= 'Service starten' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/><Taste Android:Ich würde= '@ + id / buttonStop' Android:Text= 'Service beenden' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/>LinearLayout>
  • Sobald Sie dies getan haben, gehen Sie zurück zu Hauptaktivität Klasse und fügen Sie den entsprechenden Code hinzu, um die XML-Datei und die zu verknüpfen MyServiceClass.
Paket com.example.newproject import androidx.appcompat.app.AppCompatActivity öffentliche Klasse MainActivity erweitert AppCompatActivity implementiert View.OnClickListener {privater Button starten, stoppen @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override public void onClick (View view ) {if (view == start) {startService (neue Absicht (this, MyServiceClass.class))} else if (view == stop) {stopService (neue Absicht (this, MyServiceClass.class))}}

Schritt 4

Sobald Sie mit dem Verknüpfen der Klassen fertig sind, führen Sie den Code aus.

Hinweis: Fügen Sie den Namen der Serviceklasse in die Datei AndroidManifiest.xml ein.

Lassen Sie uns als Nächstes den Code ausführen.

Sobald Sie den Dienst starten, wird er im Hintergrund ausgeführt, auch wenn eine andere Anwendung geöffnet ist. Sie können den Dienst starten oder stoppen, indem Sie auf die Schaltflächen klicken.

Dies ist eine einfache Demo, in der Sie gelernt haben, wie Sie mit Android Services arbeiten.

Damit kommen wir zum Ende dieses Artikels über „Android Services Tutorial“.Ich hoffe, Sie sind mit den Themen, die in diesem Blog behandelt werden, klar.

Nachdem Sie unseren Android Services Tutorial-Blog durchgesehen haben, können Sie sich Edurekas ansehen um schnell zu lernen.

Haben Sie Fragen? Vergessen Sie nicht, sie in den Kommentaren dieses Blogs 'Android Services Tutorial' zu erwähnen. Wir kommen auf Sie zurück.