Pornirea unui Serviciu

Un serviciu este pornit printr-un apel al metodei startService(). Aceasta primește ca parametru un obiect de tip Intent care poate fi creat:

  • explicit, pe baza denumirii clasei care implementează serviciul respectiv;
    Intent intent = new Intent(this, SomeService.class);
    startService(intent);
    
  • implicit, indicând componenta care gestionează serviciul respectiv (se va indica atât denumirea pachetului cât și denumirea clasei ca argument al metodei setComponent() asociat intenției respective):
    Intent intent = new Intent();
    intent.setComponent(new ComponentName("SomePackage", "SomeService"));
    startService(intent);
    

Transmiterea de informații suplimentare către serviciu poate fi realizată prin intermediul metodelor putExtras(Bundle), putExtra(String, Parcelable) sau put<type>Extra(String, <type>).

Metoda startService() presupune livarea unui mesaj asincron la nivelul sistemului de operare Android, astfel încât aceasta se execută instantaneu. Fiecare apel al acestei metode invocarea, în mod automat, al metodei onStartCommand().

De regulă, comunicația dintre o componentă și un serviciu este unidirecțională, dintre componenta care invocă către serviciul invocat, prin intermediul datelor încapsulate în intenție. În situația în care se dorește ca serviciul să transmită date către componentă, se utilizează un obiect de tip PendingIntent, prin intermediul căruia pot fi transmise mesaje cu difuzare.