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.