Android pakalpojumu apmācība: kā palaist lietojumprogrammu fonā?

Šī Android pakalpojumu apmācība palīdz saprast, kā veikt darbības uz fona, piemēram, mūzikas atskaņošanu. Tam nav pievienota lietotāja saskarne

Bieži vien viedtālrunī tiek izmantotas vairākas lietojumprogrammas, iespējams, vēlēsities pārslēgties no vienas lietojumprogrammas uz citu, bet arī nodrošināt, ka visas lietojumprogrammas paliek aktīvas fonā. Tie nav nekas cits kā pakalpojumi, ko piedāvā . Tātad šis raksts par Android pakalpojumu apmācību palīdzēs jums saprast, kā strādāt ar pakalpojumiem.

Es apskatīšu šādas tēmas:



Kas ir Android pakalpojumi?

Apkalpošana būtībā ir process. Android pakalpojums ir komponents, kas darbojas fonā, lai veiktuilgstošas ​​darbības bez mijiedarbības ar lietotāju, un tas darbojas pat tad, ja lietojumprogramma tiek iznīcināta.Cits lietojumprogrammas komponents var sākt pakalpojumu, un tas turpina darboties fonā, pat ja pārslēdzaties uz citu lietojumprogrammu.

Turklāt komponents var saistīties ar pakalpojumu, lai mijiedarbotos ar to un veiktu arī starpprocesu komunikāciju.

Piezīme: Android.app.Service ir klases ContextWrapper apakšklase, un Android pakalpojums nav pavediens vai atsevišķs process.

Android- Pakalpojumu dzīves cikls

Android pakalpojumu dzīves ciklam var būt divu veidu pakalpojumi. Pakalpojuma dzīves cikls iet pa diviem dažādiem ceļiem, proti:

  1. Sāka
  2. Saistīts

Sāka

Pakalpojums tiek palaists, kad zvana lietojumprogrammas komponents startService () metodi. Pēc startēšanas pakalpojums var darboties fonā bezgalīgi, pat ja komponents, kas ir atbildīgs par startēšanu, tiek iznīcināts. To aptur, izmantojot stopService () metodi. Pakalpojums var arī apturēt sevi, zvanot uz stopSelf () metodi.

Saistīts

Pakalpojums ir saistošs, kad lietojumprogrammas komponents tam piesaista, zvanot bindService () . Saistītais pakalpojums piedāvā klienta-servera saskarni, kas ļauj komponentiem mijiedarboties ar pakalpojumu, nosūtīt pieprasījumus un iegūt rezultātus. Tas tiek apstrādāts starpprocesu komunikācijā (IPC). Klients var atsaistīt pakalpojumu, zvanot uz unbindService () metodi.

Android pakalpojuma dzīves cikls - Android pakalpojumu apmācība - Edureka

Pārejot uz nākamo šī raksta sadaļu par Android pakalpojumiem, apspriedīsim atšķirīgosmetodes saskaņā ar apkalpošanas klasi.

Android pakalpojumu apmācība: metodes

Ir dažas metodes, ar kuru palīdzību jūs viegli varat veikt darbības ar jebkuru lietojumprogrammu. Daži no tiem ir:

MetodeApraksts
onStartCommand ()

Šo metodi sauc, ja kāds cits komponents, piemēram, darbība, pieprasa pakalpojuma sākšanu, zvanot startService () .

Jūsu pienākums ir pārtraukt pakalpojumu, kad tiek veikts atbilstošais darbs, izmantojot stopSelf () vai stopService () metodes.

atraisīt ()

Izsauc šo metodi, ja cits komponents vēlas saistīties ar pakalpojumu, zvanot bindService () .

Lai to īstenotu, jums jānodrošina saskarne, kuru klienti izmanto, lai sazinātos ar pakalpojumu. Tas atgriež IBinder objekts. Ja nevēlaties atļaut iesiešanu, atgriezieties nulle .

onUnbind ()

Sistēma izsauc šo metodi, kad visi klienti ir atvienoti no konkrētā pakalpojuma publicētā interfeisa.

onRebind ()

Izsauc šo metodi, kad pakalpojumam ir pievienoti jauni klienti pēc tam, kad iepriekš tika paziņots, ka visi ir atvienoti onUnbind (nodoms) .

onCreate ()

Sistēma izsauc šo metodi, kad pakalpojums tiek izveidots pirmo reizi onStartCommand () vai atraisīt () . Nepieciešams veikt vienreizēju iestatīšanu.

onDestroy ()

Šo metodi sauc, kad pakalpojums vairs netiek izmantots un tiek iznīcināts. Jūsu dienestam tas jāievieš, lai attīrītu visus resursus, piemēram, pavedienus, reģistrētos klausītājus, uztvērējus utt.

Skeleta kods

public class MainActivity paplašina darbību {private TextView textView private BroadcastReceiver uztvērējs = new BroadcastReceiver () {@Override public void onReceive (konteksta konteksts, nodoma nolūks) {Bundle bundle = intent.getExtras () if (pakete! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Lejupielāde pabeigta. Lejupielādējiet URI:' + virkne, Toast.LENGTH_LONG) .show () textView.setText ('Lejupielāde pabeigta')} else {Toast.makeText (MainActivity.this, 'Lejupielāde neizdevās, Toast.LENGTH_LONG) .show () textView.setText (' Lejupielāde neizdevās ')}}}} @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.on ) registerReceiver (uztvērējs, jauns IntentFilter (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (View view) {Intent intent = new Intent (this, DownloadService.class) // pakalpojumam pievienojiet informāciju, kuru failu lejupielādēt un kur veikals intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (szándība) textView.setText ('Pakalpojums sākts')}}

Šajā piemērā varat redzēt tādas metodes kā onCreate () , onResume () , onPause () . Šīs metodes veido pakalpojumu Android struktūru.

Apskatīsim šīs Android pakalpojumu apmācības praktisko daļukā izveidot pakalpojumu un rīkoties ar to.

Demonstrācija

Apskatīsim, kā fonā atskaņot mūziku. Lai to izdarītu, es to izmantoju Andrioda studija .

1. solis

Izveidojiet jaunu tukšu projektu. Piešķiriet projektam nosaukumu un noklikšķiniet uz Java mapes un noklikšķiniet uz MainActivity . Vispirms pievienojiet MediaPlayer lai jūs varētu importēt informāciju par atskaņotāju, piemēram, Sākt, iestatīt cilpu un tā tālāk.

pakete com.example.mydemoapplication importēt androidx.appcompat.app.AppCompatActivity publiskā klase MainActivity paplašina AppCompatActivity {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layoutPlayer.player (tas, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Piezīme. Ja to lietojat pirmo reizi, neaizmirstiet iespējot BIOS. To var izdarīt, restartējot sistēmu.

Jums būs jāpievieno virtuālā ierīce. Vienkārši noklikšķiniet uz Atveriet AVD pārvaldnieku.

Atlasiet ierīci pēc savas izvēles un esat gatavs doties!

Tas darbosies tikai tad, kad ekrāns būs aktīvs, taču, lai šī programma darbotos pat fonā, mapē jāpievieno vēl dažas koda rindas. activity_main.xml failu.

2. solis

Kad palaidīsit atbilstošo kodu, varēsiet palaist lietojumprogrammu un varēsit atskaņot mūziku uz fona, t.i., ja tiks atvērta kāda cita programma, šī audio joprojām tiks atskaņota.

Apskatīsim, kā to var izdarīt.

  • Java mapē izveidojiet citu klasi un nosauciet to. Lūk, es to esmu nosaucis MyService '.
  • Šī klase paplašina pakalpojumu klasi.
  • Kad jums ir pakalpojuma klases metodes, ieviesiet metodes, noklikšķinot uz alt + Enter.
  • Pēc tam jums ir jāpārņem metodes. Tātad, ar peles labo pogu noklikšķiniet uz loga, lai iegūtu opcijas.
  • Ģenerējiet ignorēšanas metodes, atlasiet onStartCommand () , un OnDestroy ().
  • Rediģēt onStartCommand () metodes, pievienojot šādu kodu:
MediaPlayer player = MediaPlayer.create (tas, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Piezīme: Dzēsiet šo kodu mapē MainActivity.

instalēt php uz Windows 8
  • Tas radīs kļūdu, lūdzot noņemt paziņojumu. Tātad, noņemiet atgriešanās paziņojumu un pasludiniet MediaPlayer par privātu metodi un atgriezieties START_STICKY . Tas atgriezīs sākuma statusu.
  • Pievienot player.stop () iekš onDestroy () metodi.

3. solis

Iet uz liellopa gaļa un dodieties uz izkārtojumiem, noklikšķiniet uz android_main.xml lai iegūtu lietojumprogrammas XML failu.

  • Noņemiet TextView un aizstājiet to ar LinearLayout un pievienojiet pogas. Pievienojiet atbilstošo kodu.
<LinearLayout android: orientācija= 'vertikāls' android: izkārtojuma_platums= 'match_parent' android: izkārtojums_augstums= 'wrap_content' android: layout_centerVertical= 'patiess' instrumenti: ignorēt= 'MissingConstraints'><Poga android: id= '@ + id / buttonStart' android: teksts= 'Sākt servisu' android: izkārtojuma_platums= 'wrap_content' android: izkārtojums_augstums= 'match_parent'/><Poga android: id= '@ + id / buttonStop' android: teksts= 'Pārtraukt pakalpojumu' android: izkārtojuma_platums= 'wrap_content' android: izkārtojums_augstums= 'match_parent'/>LinearLayout>
  • Kad esat to izdarījis, atgriezieties pie MainActivity klasi un pievienojiet atbilstošo kodu, lai saistītu XML failu un MyServiceClass.
pakete com.example.newproject import androidx.appcompat.app.AppCompatActivity publiskā klase MainActivity paplašina AppCompatActivity īsteno View.OnClickListener {private Button start, stop @Override protected 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 (View view) ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

4. solis

Kad esat saistījis klases, palaidīsim kodu.

Piezīme. Pievienojiet pakalpojuma klases nosaukumu failā AndroidManifiest.xml.

Pēc tam palaidīsim kodu.

Pēc pakalpojuma palaišanas tas darbosies fonā, pat ja tiek atvērta cita lietojumprogramma. Pakalpojumu var sākt vai apturēt, noklikšķinot uz pogām.

Šī ir vienkārša demonstrācija, kurā esat iemācījies strādāt ar Android pakalpojumiem.

Līdz ar to mēs esam nonākuši šī raksta beigās par “Android pakalpojumu apmācību”.Es ceru, ka jums ir skaidra tēma, kas ir aplūkota šajā emuārā.

Tagad, kad esat apmeklējis mūsu emuāru Android Services Tutorial, varat apskatīt Edureka's lai ātri sāktu mācīties.

Vai jums ir kādi jautājumi? Neaizmirstiet tos pieminēt šī emuāra “Android Services Tutorial” komentāros. Mēs sazināsimies ar jums.