„Android“ paslaugų pamoka: kaip paleisti programą fone?



Ši „Android“ paslaugų mokymo programa padeda suprasti, kaip fone atlikti veiksmus, pvz., Leisti muziką. Jame nėra jokio vartotojo sąsajos

Dažnai naudodami kelias programas išmaniajame telefone, galite pereiti nuo vienos programos prie kitos, bet taip pat užtikrinti, kad visos programos išliktų aktyvios fone. Tai yra ne kas kita, o siūlomos paslaugos . Taigi, šis „Android“ paslaugų mokymo programos straipsnis padės suprasti, kaip dirbti su paslaugomis.

Aš aptarsiu šias temas:





Kas yra „Android“ paslaugos?

Aptarnavimas iš esmės yra procesas. „Android“ paslauga yra komponentas, kuris veikia fone, kad galėtų atliktiilgai veikiančios operacijos be sąveikos su vartotoju ir tai veikia, net jei programa yra sunaikinta.Kitas programos komponentas gali paleisti paslaugą ir ji toliau veikia fone, net jei perjungiate į kitą programą.

Be to, komponentas gali prisijungti prie paslaugos, kad galėtų sąveikauti su ja ir atlikti tarpprocesinį ryšį.



Pastaba: „Android.app.Service“ yra „ContextWrapper“ klasės poklasis, o „Android“ paslauga nėra gija ar atskiras procesas.

„Android“ - paslaugų gyvenimo ciklas

„Android Services“ gyvavimo ciklas gali būti dviejų formų. Paslaugos gyvavimo ciklas eina dviem skirtingais keliais:

  1. Pradėjo
  2. Susieta

Pradėjo



Paslauga pradedama skambinti programos komponentui startService () metodas. Paleista paslauga gali veikti fone neribotą laiką, net jei komponentas, atsakingas už paleidimą, yra sunaikintas. Jis sustabdomas naudojant stopService () metodas. Paslauga taip pat gali sustabdyti save paskambinusi stopSelf () metodas.

Susieta

Paslauga yra susieta, kai programos komponentas prisijungia prie jos skambindamas „bindService“ () . „Bound service“ siūlo kliento ir serverio sąsają, leidžiančią komponentams sąveikauti su paslauga, siųsti užklausas ir gauti rezultatus. Jis apdoroja tarpprocesinę komunikaciją (IPC). Klientas gali atsieti paslaugą paskambinęs unindService () metodas.

„Android“ paslaugų gyvavimo ciklas - „Android“ paslaugų pamoka - „Edureka“

Pereikite prie kito šio straipsnio „Android“ paslaugų skirsnio, aptarkime skirtingus dalykuspaslaugų klasėje.

„Android“ paslaugų pamoka: metodai

Yra keli metodai, kuriais galite lengvai atlikti bet kurios programos operacijas. Kai kurie iš jų yra:

Metodasapibūdinimas
„onStartCommand“ ()

Šis metodas vadinamas, kai bet kuris kitas komponentas, pvz., Veikla, prašo pradėti paslaugą paskambinus startService () .

Jūsų pareiga yra sustabdyti paslaugą, kai atliekamas atitinkamas darbas stopSelf () arba stopService () metodai.

atrišti ()

Skambina šiuo metodu, kai kitas komponentas nori susieti su paslauga skambindamas „bindService“ () .

kaip įdiegti php "Windows 10"

Norėdami tai įgyvendinti, turite pateikti sąsają, kurią klientai naudoja norėdami bendrauti su paslauga. Tai grąžina IBinder objektas. Jei nenorite leisti įrišimo, grįžkite niekinis .

onUnbind ()

Sistema vadina šį metodą, kai visi klientai yra atjungti nuo tam tikros paslaugos paskelbtos sąsajos.

„onRebind“ ()

Skambina šiuo metodu, kai nauji klientai yra prisijungę prie paslaugos po to, kai anksčiau buvo pranešta, kad visi atjungti „onUnbind“ (ketinimas) .

onCreate ()

Sistema iškviečia šį metodą, kai paslauga sukuriama pirmą kartą „onStartCommand“ () arba atrišti () . Reikalinga atlikti vienkartinę sąranką.

onDestroy ()

Šis metodas vadinamas, kai paslauga nebenaudojama ir yra sunaikinama. Jūsų tarnyba turėtų tai įgyvendinti, kad išvalytų visus išteklius, tokius kaip gijos, registruoti klausytojai, imtuvai ir kt.

Skeleto kodas

viešoji klasė „MainActivity“ pratęsia veiklą {privatus „TextView textView“ privatus „BroadcastReceiver“ imtuvas = naujas „BroadcastReceiver“ () {@Paisyti viešą negalią „onReceive“ (konteksto kontekstas, ketinimo ketinimas) {paketo paketas = intent.getExtras () if (paketas! = null) {eilutės eilutė = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Atsisiuntimas baigtas. Atsisiųskite URI:' + eilutė, Tast.LENGTH_LONG) .show () textView.setText ('Atsisiųsti atlikta')} else {Toast.makeText (MainActivity.this, 'Atsisiųsti nepavyko, Toast.LENGTH_LONG) .show () textView.setText (' Atsisiųsti nepavyko ')}}}} @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Paisyti apsaugotą tuštumą onResume () {super.on ) registerReceiver (imtuvas, naujas „IntentFilter“ (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (View view) {Intent intent = new Intent (this, DownloadService.class) // pridėti paslaugos informacijos, kurią failą atsisiųsti ir kur parduotuvė szándimas.putExtra (DownloadService.FILENAME, 'index.html') ketinimas.putExtra (DownloadService.URL, 'www.edureka.co') startService (ketinimas) textView.setText ('Paslauga pradėta')}}

Šiame pavyzdyje galite pamatyti tokius metodus kaip onCreate () , onResume () , onPause () . Šie metodai sudaro „Android“ paslaugų struktūrą.

Pažiūrėkime į šios „Android“ paslaugų pamokos praktinę dalįkaip sukurti paslaugą ir ją valdyti.

Demonstracija

Pažiūrėkime, kaip groti muziką fone. Norėdami tai padaryti, aš naudosiu „Andriod“ studija .

1 žingsnis

Sukurkite naują tuščią projektą. Pavadinkite savo projektą, spustelėkite „Java“ aplanką ir spustelėkite Pagrindinis užsiėmimas . Pirmiausia pridėkite Grotuvas kad galėtumėte importuoti grotuvo informaciją, pvz., pradėti, nustatyti kilpą ir pan.

paketas com.example.mydemoapplication importuoti androidx.appcompat.app.AppCompatActivity viešoji klasė „MainActivity“ išplečia „AppCompatActivity“ {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.layer.player (tai, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Pastaba: jei naudojate pirmą kartą, nepamirškite įgalinti BIOS. Tai galite padaryti iš naujo paleisdami savo sistemą.

Turėsite pridėti virtualų įrenginį. Tiesiog spustelėkite Atidarykite AVD tvarkyklę.

kas yra laisva jungtis java

Pasirinkite savo pasirinktą įrenginį ir esate pasirengę eiti!

Tai veiks tik tada, kai ekranas bus aktyvus, tačiau norint, kad ši programa veiktų net fone, turite pridėti dar keletą kodo eilučių veiklos_pagrindinis.xml failą.

2 žingsnis

Kai paleisite atitinkamą kodą, galėsite paleisti programą ir groti muziką fone, t.y., jei bus atidaryta kita programa, šis garsas vis tiek bus grojamas.

Pažiūrėkime, kaip tai galima padaryti.

  • „Java“ aplanke sukurkite kitą klasę ir pavadinkite ją. Aš tai pavadinau „ „MyService“ '.
  • Ši klasė praplečia paslaugų klasę.
  • Kai turėsite „Service class“ metodus, įgyvendinkite metodus spustelėdami alt + Enter.
  • Po to turite nepaisyti metodų. Taigi, dešiniuoju pelės mygtuku spustelėkite langą, kad gautumėte parinktis.
  • Generuokite nepaisymo metodus, pasirinkite „onStartCommand“ () ir „OnDestroy“ ().
  • Redaguokite „onStartCommand“ () metodus, pridedant šį kodą:
MediaPlayer grotuvas = MediaPlayer.create (tai, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Pastaba: Ištrinkite šį kodą Pagrindinis užsiėmimas.

  • Tai sukels klaidą, prašant pašalinti teiginį. Taigi, pašalinkite grąžinimo sakinį ir paskelbkite „MediaPlayer“ kaip privatų metodą ir grįžkite START_STICKY . Tai grąžins pradžios būseną.
  • Papildyti player.stop () viduje onDestroy () metodas.

3 žingsnis

Eiti į jautiena ir eikite į maketus, spustelėkite android_main.xml gauti programos XML failą.

  • Pašalinkite „TextView“ ir pakeiskite jį „LinearLayout“ bei pridėkite mygtukus. Pridėkite atitinkamą kodą.
<Linijinis išdėstymas androidas: orientacija= „vertikalus“ androidas: išdėstymo_ plotis= 'match_parent' androidas: išdėstymas_aukštis= „wrap_content“ androidas: layout_centerVertical= „tiesa“ įrankiai: ignoruoti= „MissingConstraints“><Mygtukas androidas: id= „@ + id / buttonStart“ androidas: tekstas= „Pradėti paslaugą“ androidas: išdėstymo_ plotis= „wrap_content“ androidas: išdėstymas_aukštis= 'match_parent'/><Mygtukas androidas: id= '@ + id / buttonStop' androidas: tekstas= „Sustabdyti paslaugą“ androidas: išdėstymo_ plotis= „wrap_content“ androidas: išdėstymas_aukštis= 'match_parent'/>Linijinis išdėstymas>
  • Kai tai padarysite, grįžkite į Pagrindinis užsiėmimas klasę ir pridėkite atitinkamą kodą, kad susietumėte XML failą su „MyServiceClass“.
paketas com.example.newproject import androidx.appcompat.app.AppCompatActivity viešoji klasė „MainActivity“ išplečia „AppCompatActivity“ įgyvendina „View.OnClickListener“ {privataus mygtuko paleidimas, sustabdymas .activity_main) start = (mygtukas) findViewById (R.id.buttonStart) stop = (mygtukas) findViewById (R.id.buttonStop) start.setOnClickListener (tai) stop.setOnClickListener (tai)} @Paisyti viešą nieką onClick (peržiūrėti rodinį) ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

4 žingsnis

Baigę susieti klases, paleiskime kodą.

Pastaba: įtraukite „Service“ klasės pavadinimą į failą „AndroidManifiest.xml“.

Tada paleiskime kodą.

Paleidus paslaugą, ji veiks fone, net jei bus atidaryta kita programa. Paslaugą galite paleisti arba sustabdyti spustelėdami mygtukus.

Tai yra paprasta demonstracinė versija, kurioje išmokote dirbti su „Android“ paslaugomis.

Taigi, mes einame į šio straipsnio „Android paslaugų pamoka“ pabaigą.Tikiuosi, kad jums yra aiškios temos, aptariamos šiame tinklaraštyje.

Dabar, kai peržiūrėjote mūsų „Android“ paslaugų mokymo tinklaraštį, galite peržiūrėti „Edureka“ greitai pradėti mokytis.

Turite klausimų? Nepamirškite jų paminėti šio „Android Services Tutorial“ tinklaraščio komentaruose. Mes susisieksime su jumis.