Výukový program pro Android: Jak spustit aplikaci na pozadí?



Tento výukový program pro Android vám pomůže pochopit, jak provádět operace na pozadí, jako je přehrávání hudby, nemá připojené žádné uživatelské rozhraní

Často ve smartphonu používáte více aplikací, možná budete chtít přepínat z jedné aplikace do druhé, ale také zajistit, aby všechny vaše aplikace zůstaly aktivní na pozadí. Nejedná se o nic jiného než o služby nabízené společností . Tento článek o výuce služeb Android vám tedy pomůže pochopit, jak se službami pracovat.

služba nyní trénuje systém prodeje jízdenek

Budu se věnovat následujícím tématům:





Co jsou služby Android?

Služba je v zásadě proces. Služba Android je komponenta, která běží na pozadí za účelem výkonudlouhotrvající operace bez interakce s uživatelem a funguje, i když je aplikace zničena.Službu může spustit jiná komponenta aplikace, která běží na pozadí, i když přepnete na jinou aplikaci.

Součást se navíc může vázat na službu, aby s ní mohla interagovat a také provádět meziprocesovou komunikaci.



Poznámka: Android.app.Service je podtřídou třídy ContextWrapper a služba Android není podproces ani samostatný proces.

Životní cyklus služeb Android

Životní cyklus služeb Android může mít dvě formy služeb. Životní cyklus služby sleduje dvě různé cesty, jmenovitě:

  1. Začal
  2. Vázaný

Začal



Služba je spuštěna, když volá komponenta aplikace startService () metoda. Po spuštění může služba běžet na pozadí neomezeně, i když je zničena součást, která je zodpovědná za spuštění. Zastaví se pomocí stopService () metoda. Služba se také může zastavit voláním stopSelf () metoda.

Vázaný

Služba je vázána, když se komponenta aplikace k ní váže voláním bindService () . Bound service offers a client-server interface that allows components to interact with the service, send requests and, get results. Zpracovává přes meziprocesovou komunikaci (IPC). Klient může zrušit vazbu služby voláním unbindService () metoda.

Životní cyklus služby Android - výuka služeb Android - Edureka

Přejdeme k další části tohoto článku o službách Android, pojďme diskutovat o různých možnostechmetody ve třídě služeb.

Výukový program pro služby Android: Metody

Existuje několik metod, pomocí kterých můžete snadno provádět operace v jakékoli aplikaci. Někteří z nich jsou:

MetodaPopis
onStartCommand ()

Tato metoda je volána, když jakákoli jiná komponenta, například řekněme aktivitu, požaduje spuštění služby voláním startService () .

Je vaší odpovědností zastavit službu, když je odpovídající práce provedena pomocí stopSelf () nebo stopService () metody.

unbind ()

Volá tuto metodu, když chce jiná součást vytvořit vazbu se službou voláním.Calls this method when another component wants to bind with the service by calling bindService () .

Chcete-li to implementovat, musíte poskytnout rozhraní, které klienti používají ke komunikaci se službou. Vrací IBinder objekt. Pokud nechcete povolit vazbu, vraťte se nula .

onUnbind ()

Systém volá tuto metodu, když jsou všichni klienti odpojeni od konkrétního rozhraní publikovaného službou.

onRebind ()

Volá tuto metodu, když jsou ke službě připojeni noví klienti poté, co byla dříve upozorněna, že jsou všichni odpojeni onUnbind (záměr) .

onCreate ()

Systém volá tuto metodu, když je služba vytvořena nejprve pomocí onStartCommand () nebo unbind () . Je nutné provést jednorázové nastavení.

onDestroy ()

Tato metoda se volá, když služba již není používána a je ničena. Vaše služba by to měla implementovat za účelem vyčištění veškerých prostředků, jako jsou vlákna, registrovaní posluchači, přijímači atd.

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, 'Stahování dokončeno. Stahování URI:' + řetězec, Toast.LENGTH_LONG) .show () textView.setText ('Stažení dokončeno')} else {Toast.makeText (MainActivity.this, 'Stažení se nezdařilo', Toast.LENGTH_LONG) .show () textView.setText ('Stažení se nezdařilo')}}}} @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 (přijí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 spuštěna')}}

V tomto příkladu můžete vidět metody jako onCreate () , onResume () , onPause () . Tyto metody tvoří strukturu služeb v systému Android.

Pokud se nyní podíváme na praktickou část tohoto Výukového programu pro Android, podívejme sejak vytvořit službu a zacházet s ní.

Ukázka

Podívejme se, jak přehrávat hudbu na pozadí. Abych to mohl udělat, budu používat Andriod Studio .

Krok 1

Vytvořte nový prázdný projekt. Pojmenujte svůj projekt, klikněte na složku Java a klikněte na ikonu Hlavní aktivita . Nejprve přidejte Přehrávač médií takže můžete importovat podrobnosti o přehrávači, jako je start, nastavit smyčku atd.

balíček com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity veřejná třída MainActivity rozšiřuje AppCompatActivity {@Override chráněná prázdnota onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_m hráč) (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Poznámka: Pokud jej používáte poprvé, nezapomeňte povolit BIOS. Můžete to provést restartováním systému.

Budete muset přidat virtuální zařízení. Stačí kliknout na Otevřete správce AVD.

Vyberte zařízení podle vašeho výběru a jste připraveni jít!

To se spustí, pouze když je obrazovka aktivní, ale aby tato aplikace fungovala i na pozadí, musíte přidat několik dalších řádků kódu do activity_main.xml soubor.

Krok 2

Jakmile spustíte odpovídající kód, budete moci spustit aplikaci a budete moci přehrávat hudbu na pozadí, tj. Pokud je otevřena jakákoli jiná aplikace, bude tento zvuk stále hrát.

Podívejme se, jak toho lze dosáhnout.

  • Ve složce Java vytvořte další třídu a pojmenujte ji. Tady jsem to nazval „ MyService '.
  • Tato třída rozšiřuje třídu Service.
  • Jakmile máte metody třídy Service, implementujte metody kliknutím alt + Enter.
  • Poté budete muset přepsat metody. Kliknutím pravým tlačítkem na okno získáte možnosti.
  • Vygenerujte metody přepsání, vyberte onStartCommand () , a OnDestroy ().
  • Upravte onStartCommand () metody přidáním následujícího kódu .:
MediaPlayer player = MediaPlayer.create (this, Settingss.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Poznámka: Smazat tento kód v Hlavní aktivita.

  • To způsobí chybu s požadavkem na odebrání příkazu. Odeberte tedy příkaz return a deklarujte MediaPlayer jako soukromou metodu a vraťte se START_STICKY . Tím se vrátí počáteční stav.
  • Přidat player.stop () v onDestroy () metoda.

Krok 3

Jít do hovězí a přejděte na rozvržení, klikněte na android_main.xml získat soubor XML aplikace.

  • Odeberte TextView a nahraďte jej LinearLayout a přidejte tlačítka. Přidejte odpovídající kód.
<Lineární rozvržení Android:orientace= 'vertikální' Android: layout_width= 'match_parent' Android: rozložení_výška= 'wrap_content' Android: layout_centerVertikální= 'true' nástroje:ignorovat= 'MissingConstraints'><Knoflík Android: id= '@ + id / buttonStart' Android:text= 'Spustit službu' Android: layout_width= 'wrap_content' Android: rozložení_výška= 'match_parent'/><Knoflík Android: id= '@ + id / buttonStop' Android:text= 'Zastavit službu' Android: layout_width= 'wrap_content' Android: rozložení_výška= 'match_parent'/>Lineární rozvržení>
  • Jakmile to uděláte, vraťte se zpět do Hlavní aktivita třídy a přidejte odpovídající kód za účelem propojení souboru XML a souboru MyServiceClass.
balíček com.example.newproject import androidx.appcompat.app.AppCompatActivity veřejná třída MainActivity rozšiřuje AppCompatActivity implementuje View.OnClickListener {soukromé spuštění tlačítka, zastavení @Override chráněný 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 (Zobrazit pohled) ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Krok 4

Jakmile propojení dokončíte, spustíme kód.

Poznámka: Přidejte název třídy Service do souboru AndroidManifiest.xml.

Dále spustíme kód.

Jakmile spustíte službu, bude spuštěna na pozadí, i když je otevřena jiná aplikace. Službu můžete spustit nebo zastavit kliknutím na tlačítka.

Toto je jednoduchá ukázka, ve které jste se naučili pracovat se službami Android.

Tímto se dostáváme na konec tohoto článku o „Výukovém programu Android Services“.Doufám, že máte jasno v tématech, kterým se tento blog věnuje.

Nyní, když jste prošli naším blogem Výukový program služeb Android, si můžete prohlédnout Edureka's k rychlému zahájení učení.

Máte nějaké dotazy? Nezapomeňte je zmínit v komentářích tohoto blogu „Android Services Tutorial“. Ozveme se vám.