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?
- Android- Szolgáltatások életciklusa
- Android- Szolgáltatási módszerek
- Az Android Services csontvázkódja
- Demó
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:
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.
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ódszer | Leí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.