Výukový program pre služby Android: Ako spustiť aplikáciu na pozadí?



Tento výukový program služieb Android vám pomôže pochopiť, ako vykonávať operácie na pozadí, ako je napríklad prehrávanie hudby. Nemá pripojené žiadne používateľské rozhranie

Často vo svojom smartfóne používate viac aplikácií, možno budete chcieť prepnúť z jednej aplikácie na druhú, ale tiež zaistiť, aby všetky vaše aplikácie zostali aktívne na pozadí. Nejde o nič iné ako o služby ponúkané spoločnosťou . Tento článok o výučbe služieb Android vám teda pomôže pochopiť, ako so službami pracovať.

séria rekurzií fibonacci v jave

Budem sa venovať týmto témam:





Čo sú služby Android?

Služba je v zásade proces. Služba Android je komponent, ktorý beží na pozadí za účelom výkonudlhodobé operácie bez interakcie s používateľom a funguje to aj v prípade, že je aplikácia zničená.Službu môže spustiť iný komponent aplikácie, ktorý beží na pozadí, aj keď prepnete na inú aplikáciu.

Komponent sa navyše môže naviazať na službu, aby s ňou mohlo interagovať a tiež vykonávať medziprocesovú komunikáciu.



Poznámka: Android.app.Service je podtrieda triedy ContextWrapper a služba Android nie je vlákno ani samostatný proces.

Životný cyklus služieb Android

Životný cyklus služieb Android môže mať dve formy služieb. Životný cyklus služby sleduje dve rôzne cesty, a to:

  1. Začal
  2. Viazaný

Začal



Služba sa spustí, keď zavolá komponent aplikácie startService () metóda. Po spustení môže služba bežať na pozadí neobmedzene, aj keď je zničený komponent zodpovedný za spustenie. Zastavuje sa pomocou stopService () metóda. Služba sa tiež môže zastaviť volaním na stopSelf () metóda.

Viazaný

Služba je viazaná, keď sa komponent aplikácie viaže na ňu volaním bindService () . Viazaná služba ponúka rozhranie klient-server, ktoré umožňuje komponentom interagovať so službou, posielať požiadavky a dosahovať výsledky. Spracováva cez medziprocesovú komunikáciu (IPC). Klient môže zrušiť viazanie služby zavolaním na server unbindService () metóda.

Životný cyklus služby Android - Výukový program pre služby Android - Edureka

V ďalšej časti tohto článku o službách Android prejdime k rôznymmetódy v rámci triedy služieb.

Výukový program pre služby Android: Metódy

Existuje niekoľko metód, pomocou ktorých môžete ľahko vykonávať operácie s ľubovoľnými aplikáciami. Niektoré z nich sú:

MetódaPopis
onStartCommand ()

Táto metóda sa volá, keď ktorýkoľvek iný komponent, napríklad činnosť, požiada o spustenie služby volaním startService () .

Je vašou zodpovednosťou zastaviť službu, keď sa zodpovedajúca práca vykoná pomocou stopSelf () alebo stopService () metódy.

unbind ()

Zavolá túto metódu, keď sa iná súčasť chce spojiť so službou volaním bindService () .

Ak to chcete implementovať, musíte poskytnúť rozhranie, ktoré klienti používajú na komunikáciu so službou. Vracia sa IBinder objekt. Ak nechcete povoliť väzbu, vráťte sa nulový .

onUnbind ()

Systém volá túto metódu, keď sú všetci klienti odpojení od konkrétneho rozhrania publikovaného službou.

onRebind ()

Zavolá túto metódu, keď sú k službe pripojení noví klienti po predchádzajúcom upozornení, že sú všetci odpojení onUnbind (zámer) .

onCreate ()

Systém túto metódu zavolá, keď je služba vytvorená najskôr pomocou onStartCommand () alebo unbind () . Je potrebné vykonať jednorazové nastavenie.

onDestroy ()

Táto metóda sa volá, keď sa služba už nepoužíva a je zničená. Vaša služba by to mala implementovať s cieľom vyčistiť všetky zdroje, ako sú vlákna, registrovaní poslucháči, prijímači atď.

Kód kostry

public class MainActivity extends Activity {private TextView textView private BroadcastReceiver receiver = new BroadcastReceiver () {@Override public void onReceive (Context context, Intent intent) {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, 'Stiahnutie dokončené. Stiahnutie URI:' + reťazec, Toast.LENGTH_LONG) .show () textView.setText ('Sťahovanie dokončené')} else {Toast.makeText (MainActivity.this, 'Sťahovanie zlyhalo', Toast.LENGTH_LONG) .show () textView.setText ('Sťahovanie zlyhalo')}}}} @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 (prijímač, nový IntentFilter (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (View view) {Intent intent = new Intent (this, DownloadService.class) // add infos for the service which file to download and where to store intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Služba spustená')}}

V tomto príklade môžete vidieť metódy ako onCreate () , onResume () , onPause () . Tieto metódy tvoria štruktúru Služieb v systéme Android.

Teraz sa dostaneme k praktickej časti tohto Výuku služieb Android a pozrime saako vytvoriť službu a zaobchádzať s ňou.

Ukážka

Pozrime sa, ako hrať hudbu na pozadí. Aby som to mohol urobiť, budem používať Štúdio Andriod .

Krok 1

Vytvorte nový prázdny projekt. Pomenujte svoj projekt, kliknite na priečinok Java a potom na Hlavná činnosť . Najskôr pridajte Mediálny prehrávač aby ste mohli importovať podrobnosti o prehrávači, ako je start, nastaviť slučku atď.

balíček com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity verejná trieda MainActivity rozširuje AppCompatActivity {@Override chránený void onCreate (zväzok uloženýInštančnýStát) {super.onCreate (uloženáInštančnáStát) setContentView (R.layout.activity_m prehrávač (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Poznámka: Ak ho používate prvýkrát, nezabudnite povoliť systém BIOS. Môžete to urobiť reštartovaním systému.

Budete musieť pridať virtuálne zariadenie. Stačí kliknúť na Otvorte správcu AVD.

Vyberte zariadenie podľa vášho výberu a ste pripravení vyraziť!

Spustí sa to iba vtedy, keď je obrazovka aktívna, ale aby táto aplikácia fungovala aj na pozadí, musíte do riadku pridať niekoľko ďalších riadkov kódu. activity_main.xml spis.

Krok 2

Po spustení príslušného kódu budete môcť spustiť aplikáciu a budete môcť prehrávať hudbu na pozadí, t. J. Ak je otvorená iná aplikácia, bude sa tento zvuk stále prehrávať.

Pozrime sa, ako sa to dá urobiť.

  • Vytvorte ďalšiu triedu v priečinku Java a pomenujte ju. Tu som to nazval „ MyService „.
  • Táto trieda rozširuje triedu Service.
  • Keď máte k dispozícii metódy triedy Service, implementujte ich kliknutím alt + Enter.
  • Potom musíte tieto metódy prepísať. Možnosti teda získate kliknutím pravým tlačidlom myši na okno.
  • Vygenerujte metódy prepísania, vyberte onStartCommand () a OnDestroy ().
  • Upravte onStartCommand () metódy pridaním nasledujúceho kódu .:
Prehrávač MediaPlayer = MediaPlayer.create (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Poznámka: Vymazať tento kód v Hlavná činnosť.

  • To spôsobí chybu so žiadosťou o odstránenie výpisu. Takže, odstráňte príkaz return a deklarujte MediaPlayer ako súkromnú metódu a vráťte sa START_STICKY . Týmto sa vráti počiatočný stav.
  • Pridať player.stop () v onDestroy () metóda.

Krok 3

Ísť do hovädzie mäso a prejdite na rozloženia, kliknite na android_main.xml získať súbor XML aplikácie.

  • Odstráňte TextView a nahraďte ho LinearLayout a pridajte tlačidlá. Pridajte zodpovedajúci kód.
<LinearLayout Android: orientácia= 'vertikálne' Android: layout_width= 'match_parent' Android: rozloženie_výška= 'wrap_content' Android: layout_centerVertical= 'pravda' nástroje:ignorovať= 'MissingConstraints'><Tlačidlo Android: id= '@ + id / buttonStart' Android: text= 'Spustiť službu' Android: layout_width= 'wrap_content' Android: rozloženie_výška= 'match_parent'/><Tlačidlo Android: id= '@ + id / buttonStop' Android: text= 'Zastaviť službu' Android: layout_width= 'wrap_content' Android: rozloženie_výška= 'match_parent'/>LinearLayout>
  • Akonáhle to urobíte, vráťte sa späť na Hlavná činnosť triedy a pridať zodpovedajúci kód za účelom prepojenia súboru XML a súboru MyServiceClass.
balík com.example.newproject import androidx.appcompat.app.AppCompatActivity verejná trieda MainActivity rozširuje AppCompatActivity implementuje View.OnClickListener {privátne tlačidlo Štart, zastaviť @Override chránený 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 (Zobraziť pohľad) ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Krok 4

Po dokončení prepájania tried spustíme kód.

Poznámka: Pridajte názov triedy Service do súboru AndroidManifiest.xml.

Ďalej spustíme kód.

Po spustení bude služba bežať na pozadí, aj keď je otvorená iná aplikácia. Službu môžete spustiť alebo zastaviť kliknutím na tlačidlá.

Toto je jednoduchá ukážka, v ktorej ste sa naučili pracovať so službami Android.

Týmto sa dostávame na koniec tohto článku o „Výučbe služieb pre Android“.Dúfam, že máte jasno v témach, ktorým sa tento blog venuje.

Teraz, keď ste prešli našim blogom Výučba služieb pre Android, si môžete pozrieť stránku Edureka’s aby ste sa rýchlo naučili.

Máte nejaké otázky? Nezabudnite ich spomenúť v komentároch tohto blogu „Android Services Tutorial“. Ozveme sa vám.