Android Services oktatóanyag: Hogyan futtathatok egy alkalmazást a háttérben?



Ez az Android Services oktatóanyag segít megérteni, hogyan kell a háttérben műveleteket végrehajtani, például zenét játszani. Nincs csatolva felhasználói felület

Gyakran több alkalmazást is használ okostelefonján, érdemes váltani egyik alkalmazásról a másikra, de biztosítani kell, hogy az összes alkalmazás aktív maradjon a háttérben. Ezek nem mások, mint az általuk kínált szolgáltatások . Tehát ez az Android Services bemutatóról szóló cikk segít megérteni, hogyan kell működni a Szolgáltatásokkal.

logisztikai regresszió a python kódban

A következő témákkal foglalkozom:





Mik azok az Android-szolgáltatások?

A szolgáltatás alapvetően egy folyamat. Android szolgáltatás egy olyan komponens, amely a háttérben fut a teljesítés érdekébenhosszan tartó műveletek a felhasználóval való interakció nélkül, és akkor is működik, ha az alkalmazás megsemmisült.Egy másik alkalmazáskomponens elindíthatja a szolgáltatást, és akkor is fut a háttérben, ha másik alkalmazásra vált.

Ezen túlmenően, egy komponens megkötheti magát egy szolgáltatással annak érdekében, hogy kölcsönhatásba lépjen vele, és folyamatok közötti kommunikációt is hajtson végre.



Jegyzet: Az android.app.Service a ContextWrapper osztály egyik alosztálya, és az Android szolgáltatás nem szál vagy külön folyamat.

Android- Szolgáltatások életciklusa

Az Android Services életciklusának kétféle formája lehet. A szolgáltatás életciklusa két különböző utat követ, nevezetesen:

  1. Elkezdődött
  2. Összekötött

Elkezdődött



A szolgáltatás akkor indul el, amikor egy alkalmazáskomponens hív startService () módszer. Miután elindult, egy szolgáltatás korlátlanul futhat a háttérben, még akkor is, ha az indításért felelős alkatrész megsemmisült. A stopService () módszer. A szolgáltatás megállíthatja önmagát a stopSelf () módszer.

Összekötött

A szolgáltatás akkor van kötve, ha egy alkalmazás-összetevő hívással kapcsolódik hozzá bindService () . A Bound szolgáltatás kliens-szerver felületet kínál, amely lehetővé teszi az összetevők számára a szolgáltatással való interakciót, kérések küldését és az eredmények elérését. Folyamatok közötti kommunikáción (IPC) keresztül folyik. Az ügyfél megszüntetheti a szolgáltatást a unbindService () módszer.

Android Service életciklusa- Android Services oktatóanyag- Edureka

Továbblépve a cikk következő, az Android Services szolgáltatásra vonatkozó szakaszához, beszéljük meg a különbözőketmódszerek a szolgáltatási osztály alatt.

Android Services oktatóanyag: módszerek

Van néhány módszer, amellyel bármilyen műveletet könnyen elvégezhet. Néhány közülük:

MódszerLeírás
onStartCommand ()

Ezt a módszert akkor hívják meg, amikor bármely más összetevő, például mondjuk egy tevékenység, hívja a szolgáltatás elindítását startService () .

Az Ön felelőssége, hogy leállítsa a szolgáltatást, amikor a megfelelő munkát a használatával végezzük stopSelf () vagy stopService () mód.

lekötni ()

Akkor hívja meg ezt a módszert, ha egy másik összetevő hívással akar kapcsolódni a szolgáltatáshoz bindService () .

Ennek megvalósításához meg kell adnia egy felületet, amelyet az ügyfelek használnak a szolgáltatással való kommunikációhoz. Visszaad egy IBinder tárgy. Ha nem akarja engedélyezni a kötést, akkor térjen vissza nulla .

onUnbind ()

A rendszer akkor hívja meg ezt a módszert, amikor az összes ügyfél le van választva a szolgáltatás által közzétett adott interfészről.

onRebind ()

Hívja ezt a módszert, ha új ügyfelek csatlakoznak a szolgáltatáshoz, miután korábban értesítést kaptak arról, hogy mindegyikük le van kapcsolva onUnbind (szándék) .

onCreate ()

A rendszer ezt a módszert hívja meg, amikor a szolgáltatást először használják onStartCommand () vagy lekötni () . Egyszeri beállítás elvégzésére van szükség.

onDestroy ()

Ezt a módszert akkor hívják meg, amikor a szolgáltatást már nem használják, és megsemmisül. Szolgálatának ezt meg kell valósítania az olyan erőforrások megtisztítása érdekében, mint a szálak, a regisztrált hallgatók, a vevők stb.

Csontváz kód

public class MainActivity kiterjeszti a tevékenységet {private textView textView private BroadcastReceiver receiver = new BroadcastReceiver () {@Orride public void onReceive (Context context, Intent szándék) {Bundle bundle = szándék.getExtras () if (köteg! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'A letöltés befejeződött. URI letöltése:' + karakterlánc, Toast.LENGTH_LONG) .show () textView.setText ('Letöltés kész')} else {Toast.makeText (MainActivity.this, 'Sikertelen letöltés', Toast.LENGTH_LONG) .show () textView.setText ('Sikertelen letöltés')}}}} @Orride public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Orride protected void onResume () {super.on ) registerReceiver (vevő, új IntentFilter (DownloadService.NOTIFICATION))} @Override védett void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (Nézet megtekintése) {Intent szándék = új szándék (this, DownloadService.class) // adjon hozzá információkat a szolgáltatáshoz, melyik fájlt töltse le és hova store szándék.putExtra (DownloadService.FILENAME, 'index.html') szándék.putExtra (DownloadService.URL, 'www.edureka.co') startService (szándék) textView.setText ('Szolgáltatás elindítva')}}

Ebben a példában láthatja a hasonló módszereket onCreate () , folytatva () , onPause () . Ezek a módszerek alkotják az Android szolgáltatásainak felépítését.

Az Android Services oktatóanyag gyakorlati részéhez eljutva nézzük meghogyan lehet egy szolgáltatást létrehozni és kezelni.

Demó

Lássuk, hogyan kell zenélni a háttérben. Ennek érdekében használom Andriod Stúdió .

1. lépés

Hozzon létre egy új üres projektet. Nevezze el projektjét, kattintson a Java mappára, majd a Fő tevékenység . Először add hozzá Médialejátszó így importálhatja a lejátszó adatait, például a startot, beállíthatja a ciklust és így tovább.

com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity nyilvános osztály A MainActivity kiterjeszti az AppCompatActivity {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layoutPlayer.player) (ez, a Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Megjegyzés: Ha először használja, ne felejtse el engedélyezni a BIOS-t. Ezt a rendszer újraindításával teheti meg.

Hozzá kell adnia egy virtuális eszközt. Csak kattintson a gombra Nyissa meg az AVD kezelőt.

Válasszon ki egy tetszőleges eszközt, és máris indulhat!

Ez csak akkor fog futni, amikor a képernyő aktív, de ahhoz, hogy az alkalmazás még a háttérben is működjön, hozzá kell adnia még néhány kódsort a activity_main.xml fájl.

2. lépés

Miután futtatta a megfelelő kódot, futtathatja az alkalmazást, és a háttérben lejátszhatja a zenét, azaz ha bármely más alkalmazás megnyílik, akkor ez a hang továbbra is szól.

Lássuk, hogyan lehet ezt megtenni.

  • Hozzon létre egy másik osztályt a Java mappában, és nevezze el. Itt hívtam MyService '.
  • Ez az osztály kiterjeszti a Service osztályt.
  • Miután megkapta a Service class módszereket, hajtsa végre a módszereket a kattintással alt + Enter.
  • Ezek után felül kell írnia a módszereket. Tehát kattintson a jobb gombbal az ablakra a beállítások eléréséhez.
  • Generálja a felülírási módszereket, válassza ki onStartCommand () , és OnDestroy ().
  • Szerkessze a onStartCommand () módszereket a következő kód hozzáadásával:
MediaPlayer player = MediaPlayer.create (ez, a Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Jegyzet: Törölje ezt a kódot a Fő tevékenység.

  • Ez hibát fog kérni, amelyben arra kéri az utasítás eltávolítását. Tehát távolítsa el a return utasítást, és nyilvánítsa a MediaPlayert privát módszerként, és térjen vissza START_STICKY . Ez visszaadja a start állapotát.
  • Hozzáadás player.stop () ban,-ben onDestroy () módszer.

3. lépés

Menj marhahús és menjen az elrendezésekhez, kattintson a gombra android_main.xml hogy megszerezzük az alkalmazás XML fájlját.

  • Távolítsa el a TextView-t, és cserélje le a LinearLayout és add Buttons gombra. Adja hozzá a megfelelő kódot.
<LinearLayout android:irányultság= 'függőleges' android: layout_width= 'match_parent' android: layout_height= 'wrap_content' android: layout_centerVertical= 'igaz' eszközök:figyelmen kívül hagyni= 'MissingConstraints'><Gomb android: id= '@ + id / buttonStart' android:szöveg= 'Szolgáltatás indítása' android: layout_width= 'wrap_content' android: layout_height= 'match_parent'/><Gomb android: id= '@ + id / buttonStop' android:szöveg= 'Szolgáltatás leállítása' android: layout_width= 'wrap_content' android: layout_height= 'match_parent'/>LinearLayout>
  • Miután ezt megtette, térjen vissza a Fő tevékenység osztályt, és adja hozzá a megfelelő kódot az XML fájl és a MyServiceClass.
csomag com.example.newproject import androidx.appcompat.app.AppCompatActivity nyilvános osztály A MainActivity kiterjeszti az AppCompatActivity megvalósítja a View.OnClickListener {private Button start, stop @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) .activity_main) start = (Gomb) findViewById (R.id.buttonStart) stop = (Gomb) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Orride public void onClick (View view) ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

4. lépés

Miután végzett az osztályok összekapcsolásával, futtassuk a kódot.

Megjegyzés: Adja hozzá a Service class nevet az AndroidManifiest.xml fájlba.

Ezután futtassuk a kódot.

A szolgáltatás elindítása után akkor is fut a háttérben, ha másik alkalmazás nyílik meg. A gombokra kattintva elindíthatja vagy leállíthatja a szolgáltatást.

Ez egy egyszerű bemutató, ahol megtanulta az Android Services használatát.

Tehát ezzel a cikk végére értünk az „Android Services Tutorial” témához.Remélem, hogy tisztában van a témákkal, amelyek ebben a blogban szerepelnek.

Most, hogy végignézte az Android Services bemutató blogunkat, megnézheti az Edureka blogját hogy gyorsan elinduljon a tanulás.

Van kérdése? Ne felejtse el megemlíteni őket az „Android Services Tutorial” blog megjegyzésében. Visszajövünk.