Sie starten einen Dienst von einer Aktivität auf eine smilare Weise, um wie Sie eine Aktivität starten. Sie erstellen eine xpplicit-Absicht, die auf den Dienst gerichtet ist, den Sie starten möchten, und verwenden dann die startService()-Methode in Ihrer Aktivität, um sie zu starten:
Absichtsabsicht = neue Absicht(dies, DelayedMessageService.class; startService(intent);
Vollständiger Code für kontextbezogen:
Paket eu.kio.joke; importieren android.app.Activity; importieren android.os.Bundle; importieren android.view.View; importieren android.content.Intent; Public Class MainActivity erweitert Die Aktivität @Override geschützte void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(Ansichtsansicht) Absichtsabsicht = neue Absicht(dies, DelayedMessageService.class); intent.putExtra(DelayedMessageService.EXTRA_MESSAGE,getResources().getString(R.string.response)); startService(intent); } }
Der Servicecode:
Paket eu.kio.joke; importieren android.app.IntentService; importieren android.content.Intent; importieren android.util.Log; /** * Eine Unterklasse "@link IntentService" zur Behandlung asynchroner Aufgabenanforderungen in * ein Dienst in einem separaten Handlerthread. *<p> * TODO: Anpassung der Klasse - aktualisieren Sie Absichtsaktionen und zusätzliche Parameter. */ Die öffentliche Klasse DelayedMessageService erweitert IntentService öffentliche statische letzte Zeichenfolge EXTRA_MESSAGE = "Nachricht"; öffentlicher DelayedMessageService()" super("DelayedMessageService"); } /*Setzen Sie den Code, den der Dienst ausführen soll, in die onHandleIntent()-Methode*/ @Override geschützte void onHandleIntent(Intent intent) synchronisiert(dies)" Versuch { warten(10000); • catch (InterruptedException e) e.printStackTrace(); } } Zeichenfolgentext = intent.getStringExtra(EXTRA_MESSAGE); showText(Text); } Private void showText(endgültiger Zeichenfolgentext) Dadurch wird ein Textprotokollprotokolliert, damit wir ihn im Logcat über Android Studio sehen können. Log.v("DelayedMessageService","Die Meldung lautet: "+text); } }
Wenn eine Anwendungskomponente (z. B. eine Aktivität) einen Dienst startet, wechselt der Dienst von der Erstellung zur Ausführung zur Zerstörung.
Der Dienst erbt Lebenszyklusmethoden
Es löst wichtige Service-Lifecyle-Methoden aus, die es von der android.app.IntentService-Klasse erbt.
- onCreate()
- onStartCommand()
- onDestroy()
Sind die drei wichtigsten Service-Lebenszyklusmethoden.