Tutorial sa Mga Serbisyo sa Android: Paano magpatakbo ng isang application sa background?

Tinutulungan ka ng Tutorial ng Mga Serbisyo ng Android na maunawaan kung paano magsagawa ng mga pagpapatakbo sa background tulad ng paglalaro ng musika, Wala itong naka-attach na UI

Kadalasan gumagamit ng maraming mga application sa iyong smartphone, maaaring gusto mong lumipat mula sa isang application patungo sa isa pa ngunit tiyaking ang lahat ng iyong mga application ay mananatiling aktibo sa background. Ang mga ito ay walang anuman kundi ang mga serbisyong inaalok ng . Kaya, ang artikulong ito sa Tutorial sa Mga Serbisyo sa Android ay makakatulong sa iyo na maunawaan kung paano gumana sa Mga Serbisyo.

Sasaklawin ko ang mga sumusunod na paksa:





Ano ang Mga Serbisyo sa Android?

Karaniwang isang proseso ang serbisyo. Serbisyo sa Android ay isang sangkap na tumatakbo sa background upang maisagawamatagal nang pagpapatakbo nang hindi nakikipag-ugnay sa gumagamit at gumagana ito kahit na ang application ay nawasak.Ang isa pang bahagi ng application ay maaaring magsimula ng isang serbisyo at ito ay patuloy na tumatakbo sa background kahit na lumipat ka sa ibang application.

Bilang karagdagan, ang isang sangkap ay maaaring maiugnay ang sarili sa isang serbisyo upang makihalubilo dito at magsagawa din ng interprocess na komunikasyon.



Tandaan: Ang android.app.Service ay isang subclass ng ContextWrapper class at ang serbisyo sa Android ay hindi isang thread o hiwalay na proseso.

Android- Siklo ng Buhay ng Mga Serbisyo

Ang cycle ng buhay ng Mga Serbisyo ng Android ay maaaring magkaroon ng dalawang uri ng mga serbisyo. Ang lifecycle ng isang serbisyo ay sumusunod sa dalawang magkakaibang mga landas, lalo:

  1. Nagsimula
  2. Nakagapos

Nagsimula



kung paano i-configure ang eklipse para sa java

Nagsimula ang isang serbisyo kapag tumawag ang isang bahagi ng application startService () paraan Kapag nagsimula na, ang isang serbisyo ay maaaring tumakbo sa background nang walang katiyakan, kahit na ang sangkap na responsable para sa pagsisimula ay nawasak. Pinahinto ito sa pamamagitan ng paggamit ng stopService () paraan Maaari ring ihinto ng serbisyo ang sarili sa pamamagitan ng pagtawag sa itigil ang sarili () paraan

Nakagapos

Ang isang serbisyo ay nakatali kapag ang isang bahagi ng application ay nagbubuklod dito sa pamamagitan ng pagtawag bindService () . Nag-aalok ang bound service ng isang interface ng client-server na nagbibigay-daan sa mga sangkap na makipag-ugnay sa serbisyo, magpadala ng mga kahilingan at, makakuha ng mga resulta. Pinoproseso nito sa kabuuan ng komunikasyon sa pagitan ng proseso (IPC). Maaaring hubarin ng kliyente ang serbisyo sa pamamagitan ng pagtawag sa unbindService () paraan

Lifecycle ng Serbisyo ng Android- Tutorial sa Mga Serbisyo sa Android- Edureka

Pagpunta sa susunod na seksyon ng artikulong ito sa Mga Serbisyo sa Android, talakayin natin ang ibamga pamamaraan sa ilalim ng klase ng serbisyo.

Tutorial sa Mga Serbisyo sa Android: Mga Paraan

Mayroong ilang mga pamamaraan na ginagamit kung saan madali mong maisasagawa ang mga pagpapatakbo sa anumang aplikasyon. Ang ilan sa kanila ay:

PamamaraanPaglalarawan
onStartCommand ()

Ang pamamaraang ito ay tinawag kapag ang anumang iba pang bahagi, tulad ng sabihin ng isang aktibidad, ay humiling sa serbisyo na simulan, sa pamamagitan ng pagtawag startService () .

Responsibilidad mong ihinto ang serbisyo kapag ang kaukulang trabaho ay tapos na sa pamamagitan ng paggamit itigil ang sarili () o stopService () paraan.

binalot ()

Tumatawag sa pamamaraang ito kapag ang ibang sangkap ay nais na magbuklod sa serbisyo sa pamamagitan ng pagtawag bindService () .

Upang maipatupad ito, dapat kang magbigay ng isang interface na ginagamit ng mga kliyente upang makipag-usap sa serbisyo. Nagbabalik ito an IBinder bagay Kung hindi mo nais na payagan ang pagbubuklod, pagkatapos ay bumalik wala .

onUnbind ()

Tinatawag ng system ang pamamaraang ito kapag ang lahat ng mga kliyente ay naka-disconnect mula sa isang partikular na interface na na-publish ng serbisyo.

onRebind ()

Tawag sa pamamaraang ito kapag ang mga bagong kliyente ay konektado sa serbisyo matapos itong maabisuhan dati na ang lahat ay naka-disconnect onUnbind (Intent) .

onCreate ()

Tinatawag ng system ang pamamaraang ito kapag ang serbisyo ay nilikha muna gamit ang onStartCommand () o binalot () . Kinakailangan na magsagawa ng isang isang beses na pag-set up.

onDestroy ()

Ang pamamaraang ito ay tinawag kapag ang serbisyo ay hindi na ginagamit at nawasak. Dapat ipatupad ito ng iyong serbisyo upang malinis ang anumang mga mapagkukunan tulad ng mga thread, rehistradong tagapakinig, tatanggap, atbp.

Skeleton code

pampubliko na klase ng MainActivity ay nagpapalawak ng Aktibidad {pribadong TextView textView pribadong BroadcastReceiver receiver = bagong BroadcastReceiver () {@Override public void onReceive (Context konteksto, Intent intensyon) {Bundle bundle = intent.getExtras () if (bundle! = null) {String string = bundle.getString (DownloadService.ScriptPATH) int resultaCode = bundle.getInt (DownloadService.RESULT) kung (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this na ito, 'Kumpleto na ang pag-download. Mag-download ng URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('tapos na ang pag-download')} iba pa {Toast.makeText (MainActivity.this, 'Nabigo ang pag-download', Toast.LENGTH_LONG) .show () textView.setText ('Nabigo ang pag-download')}}}} @Override public void onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override protektado walang bisa onResume () {super.onRes ) registerReceiver (tatanggap, bagong IntentFilter (DownloadService.NOTIFICATION))} @Override protektadong void onPause () {super.onPause () unregisterReceiver (receiver)} publiko na walang bisa saClick (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 (hangarin) textView.setText ('Nagsimula ang serbisyo')}}

Sa halimbawang ito, maaari mong makita ang mga pamamaraan tulad ng onCreate () , sa resume () , onPause () . Ang mga pamamaraang ito ay bumubuo sa istraktura ng Mga Serbisyo sa Android.

Ngayon, sa pagpunta sa praktikal na bahagi ng Tutorial sa Mga Serbisyo ng Android na ito, tingnan natinkung paano lumikha ng isang serbisyo at hawakan ito.

Demo

Tingnan natin kung paano magpatugtog ng musika sa background. Upang magawa iyon, gagamitin ko Andriod Studio .

Hakbang 1

Lumikha ng isang bagong walang laman na proyekto. Pangalanan ang iyong proyekto at mag-click sa Java folder at mag-click sa Pangunahing aktibidad . Una, idagdag MediaPlayer upang ma-import mo ang mga detalye ng player tulad ng pagsisimula, itakda ang loop at iba pa.

package com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity public class na MainActivity ay nagpapalawak ng AppCompatActivity {@Override na protektado ng walang bisa saCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState) setContentView (R.layout MediaCreactivity). (ito, Mga Setting.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Tandaan: Kung ginagamit mo ito sa unang pagkakataon, huwag kalimutang paganahin ang BIOS. Magagawa mo ito sa pamamagitan ng pag-restart ng iyong system.

Kailangan mong magdagdag ng isang virtual na aparato. Mag-click lamang sa Buksan ang manager ng AVD.

Pumili ng isang aparato na iyong pinili at handa ka nang umalis!

Tatakbo lamang ito kapag ang screen ay aktibo ngunit upang gumana ang application na ito kahit sa background, kailangan mong magdagdag ng ilang higit pang mga linya ng code sa aktibidad_main.xml file

Hakbang 2

Sa sandaling patakbuhin mo ang kaukulang code, magagawa mong patakbuhin ang application at makakapagpatugtog ng musika sa background, ibig sabihin, kung may iba pang application na binuksan, ang audio na ito ay magpapatugtog pa rin.

Tingnan natin kung paano ito magagawa.

  • Lumikha ng isa pang klase sa Java folder at pangalanan ito. Dito, tinawag ko itong ' MyService '.
  • Pinahaba ng klase na ito ang klase ng Serbisyo.
  • Kapag mayroon kang mga pamamaraan sa klase ng Serbisyo, ipatupad ang mga pamamaraan sa pamamagitan ng pag-click alt + Enter.
  • Pagkatapos nito, kailangan mong i-override ang mga pamamaraan. Kaya, mag-right click sa window upang makuha ang mga pagpipilian.
  • Bumuo ng mga paraan ng pag-override, piliin ang onStartCommand () , at OnDestroy ().
  • I-edit ang onStartCommand () mga pamamaraan sa pamamagitan ng pagdaragdag ng sumusunod na code .:
MediaPlayer player = MediaPlayer.create (ito, Mga Setting.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Tandaan: Tanggalin ang code na ito sa Pangunahing aktibidad.

  • Itatapon nito ang isang error na humihiling sa iyo na alisin ang pahayag. Kaya, alisin ang pahayag sa pagbabalik at ideklara ang MediaPlayer bilang isang pribadong pamamaraan at bumalik START_STICKY . Ibabalik nito ang katayuan sa pagsisimula.
  • Idagdag pa player.stop () nasa onDestroy () paraan

Hakbang 3

Pumunta sa baka at pumunta sa mga layout, mag-click sa android_main.xml upang makuha ang XML file ng application.

  • Alisin ang TextView at palitan ito ng LinearLayout at magdagdag ng Mga Pindutan. Idagdag ang kaukulang code.
<LinearLayout android: oryentasyon= 'patayo' android: layout_width= 'match_parent' android: layout_height= 'wrap_content' android: layout_centerVertical= 'totoo' mga tool:Huwag pansinin= 'MissingConstraints'><Pindutan android: id= '@ + id / buttonStart' android: text= 'Simulang Serbisyo' android: layout_width= 'wrap_content' android: layout_height= 'match_parent'/><Pindutan android: id= '@ + id / buttonStop' android: text= 'Ihinto ang Serbisyo' android: layout_width= 'wrap_content' android: layout_height= 'match_parent'/>LinearLayout>
  • Kapag ginawa mo ito, bumalik sa Pangunahing aktibidad klase at idagdag ang kaukulang code upang mai-link ang XML file at ang MyServiceClass.
package com.example.newproject import androidx.appcompat.app.AppCompatActivity public class MainActivity nagpapalawak ng AppCompatActivity ipinapatupad View.OnClickListener {pagsisimula ng pribadong Button, ihinto ang @Override protektado na walang bisa onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceVideo) .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))} iba pa kung (view == stop) {stopService (bagong Intent (ito, MyServiceClass.class))}}

Hakbang 4

Kapag tapos ka na mag-link ng mga klase, patakbuhin natin ang code.

Tandaan: Idagdag ang pangalan ng klase ng Serbisyo sa AndroidManifiest.xml file.

Susunod, patakbuhin natin ang code.

Kapag sinimulan mo ang serbisyo, tatakbo ito sa background kahit na may isa pang application na binuksan. Maaari mong simulan o ihinto ang serbisyo sa pamamagitan ng pag-click sa mga pindutan.

Ito ay isang simpleng demo kung saan natutunan mo kung paano gumana sa Mga Serbisyo sa Android.

Kaya kasama nito, natapos namin ang artikulong ito sa 'Tutorial sa Mga Serbisyo sa Android'.Inaasahan kong malinaw ka sa mga paksang sakop sa blog na ito.

Ngayon na dumaan ka sa aming blog sa Mga Serbisyo sa Android Services, maaari mong suriin ang Edureka upang masimulan nang mabilis ang iyong pag-aaral.

Mayroon bang mga query? Huwag kalimutang banggitin ang mga ito sa mga komento ng 'Tutorial sa Mga Serbisyo sa Android' na blog na ito. Babalikan ka namin.