Mājas lapa » » Kas tieši notiek, kad lietojat Android lietotni no jaunāko lietotņu saraksta?

    Kas tieši notiek, kad lietojat Android lietotni no jaunāko lietotņu saraksta?

    Kad velaties lietojumprogrammu no sava Android operētājsistēmas saraksta, kas tieši notiek ar programmu un datiem? Lasiet tālāk, kad mēs izmeklējam.

    Šodienas jautājumu un atbilžu sesija mums dod pieklājīgi no Android Enthusiast-Stack Exchange apakšnodaļas, kas ir kopienas orientēta Q & A tīmekļa vietņu grupa.

    Jautājums

    Android Enthusiast lasītājs Eldarerathis ir ziņkārīgs par lietojumprogrammu pārvilkšanas funkcionalitāti, kas ļauj izvilkt savu lietojumprogrammu sarakstu, izmantojot mājas pogu, un pēc tam velciet tos pa labi, iespējams, tos aizverot:

    Pēdējo lietotņu saraksts Ice Cream Sandwich pievienoja spēju pārvilkt lietotnes no saraksta, tādējādi atlaižot tās pastāvīgi (un, cik es zinu, tas ir vaniļas funkcija, nevis CM / custom ROM). Dokumentācija un platformas izceltie elementi neparādās, lai aptvertu šīs funkcijas nepilnības, bet es vēlos zināt, ko sistēma faktiski dara.

    Turpinot pievienoties savai ziņkārībai, es nolēmu veikt ātru pārbaudi: es startēju mūziku uz CM9 instalācijas, pēc tam izņēmu no tā. Pēc tam es pārbaudīju pēdējo lietotņu sarakstu un redzēju, ka tā patiešām ir (un atbilstošā stāvoklī, pamatojoties uz sīktēlu). Tad es devos Iestatījumi-> Programmas un spēks pārtrauca lietotni Mūzika, bet tas joprojām bija iekļauts jaunākajā sarakstā, liekot man domāt, ka tas nav saistīts ar procesiem, kas saglabājas fonā.

    Apzinoties, ka mūzika var būt bijusi slikta izvēle, es arī izmēģināju ar ASV Today lietotni. Tas uzrādīja būtībā tādu pašu uzvedību, un šķita, ka tas bija spiests "atsākt" pēc tam, kad spēka apstāšanās (kas ir jēga), lai gan pēdējo lietotņu saraksta sīktēls to neatspoguļoja (kešatmiņā, es uzminēju?).

    Tātad, kas patiesībā notiek operētājsistēmas līmenī, kad lietojat lietojumprogrammu no pēdējā saraksta? Vai tas vienkārši izdzēš lietotnes datus no RAM un atkritumi savāc to, iznīcinot saglabāto stāvokli?

    Kas tieši notiek, kad lietojumprogramma tiek noņemta no saraksta?

    Atbildes

    Android Entuziasts ziedotājs Austins Mills piedāvā kādu ieskatu:

    Lietojumprogrammu svītrošana no pēdējo lietotņu saraksta ir vaniļa un jā, nav labi dokumentēta. Tas ir bijis jautājums par pienācīgu diskusiju par dažādiem Android forumiem ... vienprātība, šķiet, vislabāk aprakstīta dažos komentāros: ka uzvedība ir līdzīga, bet ne gluži tā pati kā programmas slēgšana - kopumā (lietojumprogrammām, kas nenosaka skaidru atpakaļpogu pogas apstrādi) tā ir tā pati lieta, kas pietrūkst pietiekami daudz laika no lietojumprogrammas, kuru iziet no tā.

    Saitei ir sīkāka informācija par specifiku, bet kopumā to varat uzskatīt par izbeigšanu.

    Mūzikas lietotnei, manuprāt, tas sāk pakalpojumu, tāpēc, lai gan pats uzdevums (mūzikas lietotne / lietotāja interfeiss) var būt aizvērts, pakalpojums turpina darboties fonā, lai jūsu mūzika pēkšņi neapstājas tikai tāpēc, ka uzdevums izdzēsts atmiņas pārvaldības iemeslu dēļ. Tas varēja ietekmēt to, ko redzējāt.

    Tad Eldarerathis, piedaloties jautājumu un atbilžu lokā, atgriezās ar dažiem pētījumiem, lai apaļotu atbildi:

    Šķiet, ka esmu atradis burvju meklēšanas vienumus, kas noveda pie dažiem Google darbinieku paskaidrojumiem. Konkrētāk, es atklāju pāris dažādās vietās, kur Dianne Hackborn paskaidro, kas notiek, kad velaties kaut ko no pēdējā saraksta. Pirmais ir komentārs par vienu no viņas Google+ ziņām:

    [W] cepure īpaši notiek, kad jūs velaties prom no pēdējā uzdevuma: (1) nogalina jebkuru programmas fonu vai tukšus procesus (skatiet šeit, ko tas nozīmē), un (2) izmanto jauno API, lai pastāstītu par jebkuru pakalpojumu lietojumprogramma par izņemto uzdevumu, lai tā varētu darīt visu, ko tā uzskata par piemērotu.

    Viņa bloga komentārā atzīmē arī:

    Faktiski, ieraksta noņemšana pēdējos uzdevumos nogalinās visus procesam raksturīgos fona procesus. Tas tieši neizraisīs pakalpojumu apstāšanos, tomēr ir API, lai tās varētu noskaidrot, vai uzdevums tika noņemts, lai izlemtu, vai viņi vēlas, lai tas nozīmētu, ka tie ir jāpārtrauc. Tas tā ir, lai noņemtu, ka e-pasta lietotnes pēdējā uzdevuma dēļ tā vairs nepārtrauc e-pasta pārbaudi.

    Ja jūs patiešām vēlaties pilnībā apturēt lietotni, varat ilgstoši nospiest jaunākos uzdevumus, lai dotos uz lietotnes informāciju, un spiediet spēku apturēšanu. Spēka apturēšana ir pilnīga lietotnes nogalināšana - visi procesi tiek nogalināti, visi pakalpojumi tiek apturēti, visi paziņojumi ir noņemti, visi trauksmes signāli ir noņemti utt..

    Tātad, izskatās, ka kopsavilkums ir tāds, ka lietojumprogrammas svītrošana no saraksta vispirms nogalinās visus programmas fona procesus, pēc tam izmantojiet onTaskRemoved paziņot lietotnei, ka fona uzdevums ir noņemts. Tajā brīdī izskatās, ka tas ir atkarīgs no lietotnes, lai izlemtu, kas notiek, tāpēc es domāju, ka tas ir tehniski nav grūti un ātri noteikums par to, kas notiek ar lietotni pēc šī punkta.


    Vai kaut kas jāpievieno paskaidrojumam? Skaņas izslēgšana komentāros. Vai vēlaties lasīt vairāk atbildes no citiem tehnoloģiju gudriem Stack Exchange lietotājiem? Apskatiet pilnu diskusiju pavedienu šeit.