Joprojām ir daudz cilvēku, kas nezina, kā daudzuzdevumu veikšana darbojas operētājsistēmā iOS. Tomēr iesākumā jānorāda, ka šī nav īsta multitasking, bet gan ļoti gudrs risinājums, kas neapgrūtina sistēmu vai lietotāju.
Bieži var dzirdēt māņticību, ka lietotnes, kas darbojas iOS fonā, aizpilda darbības atmiņu, kas noved pie sistēmas palēnināšanas un akumulatora darbības laika, tāpēc lietotājam tās jāizslēdz manuāli. Daudzuzdevumu joslā faktiski nav visu darbojošos fona procesu saraksta, bet tikai pēdējās palaistās lietojumprogrammas. Tāpēc lietotājam nav jāuztraucas par procesiem, kas darbojas fonā, izņemot dažus gadījumus. Nospiežot pogu Home, aplikācija parasti pāriet miega režīmā vai aizveras, lai tā vairs neuzlādē ne procesoru, ne akumulatoru un nepieciešamības gadījumā atbrīvo nepieciešamo atmiņu.
Tātad šī nav pilnvērtīga vairākuzdevumu veikšana, kad darbojas vairāki desmiti procesu. Priekšplānā vienmēr darbojas tikai viena lietojumprogramma, kas vajadzības gadījumā tiek apturēta vai pilnībā izslēgta. Fonā darbojas tikai daži sekundārie procesi. Tāpēc iOS operētājsistēmā reti nāksies saskarties ar lietojumprogrammu avāriju, piemēram, Android ir pārslogots ar palaistām programmām, par kurām lietotājam ir jārūpējas. No vienas puses, tas padara darbu ar ierīci nepatīkamu, no otras puses, tas izraisa, piemēram, lēnu startēšanu un pārejas starp lietojumprogrammām.
Lietojumprogrammas izpildlaika veids
Lietojumprogrammai jūsu iOS ierīcē ir kāds no šiem 5 stāvokļiem:
- Skriešana: lietojumprogramma tiek startēta un darbojas priekšplānā
- Fons: tas joprojām darbojas, bet darbojas fonā (mēs varam izmantot citas lietojumprogrammas)
- Apturēts: Joprojām izmanto RAM, bet nedarbojas
- Neaktīvs: lietojumprogramma darbojas, bet netiešas komandas (piemēram, kad bloķējat ierīci, kad programma darbojas)
- Nedarbojas: Pieteikšanās ir beigusies vai nav sākusies
Apjukums rodas, kad lietotne pāriet fonā, lai netraucētu. Nospiežot sākuma pogu vai izmantojot žestu, lai aizvērtu lietojumprogrammu (iPad), lietojumprogramma pāriet fonā. Lielākā daļa lietotņu tiek apturētas dažu sekunžu laikā (tās tiek saglabātas iDevice operatīvajā atmiņā, lai tās varētu ātri palaist, tās tik ļoti nenoslogo procesoru un tādējādi ietaupa akumulatora darbības laiku) Varētu domāt, ka, ja lietotne turpina izmantot atmiņu, , lai to manuāli izdzēstu, lai to atbrīvotu. Bet jums tas nav jādara, jo iOS to darīs jūsu vietā. Ja fonā ir apturēta prasīga lietojumprogramma, piemēram, spēle, kas izmanto lielu RAM daudzumu, iOS nepieciešamības gadījumā to automātiski izņems no atmiņas, un jūs varat to restartēt, pieskaroties lietojumprogrammas ikonai.
Neviens no šiem stāvokļiem netiek atspoguļots vairākuzdevumu joslā, panelī tiek rādīts tikai nesen palaistu programmu saraksts neatkarīgi no tā, vai lietotne ir apturēta, apturēta vai darbojas fonā. Varat arī pamanīt, ka lietojumprogramma, kas pašlaik darbojas, neparādās vairākuzdevumu panelī
Fona uzdevumi
Parasti, nospiežot pogu Sākums, lietojumprogramma darbosies fonā, un, ja jūs to neizmantojat, tā automātiski apstāsies piecu sekunžu laikā. Tātad, ja, piemēram, lejupielādējat aplādes apraidi, sistēma to novērtē kā darbojošu lietojumprogrammu un aizkavē pārtraukšanu par desmit minūtēm. Vēlākais pēc desmit minūtēm process tiek atbrīvots no atmiņas. Īsāk sakot, jums nav jāuztraucas par lejupielādes pārtraukšanu, nospiežot sākuma pogu, ja lejupielādes pabeigšana neaizņem vairāk par 10 minūtēm.
Nenoteikta darbība fonā
Neaktivitātes gadījumā sistēma pārtrauc lietotnes darbību piecu sekunžu laikā, bet lejupielāžu gadījumā pārtraukšana tiek aizkavēta par desmit minūtēm. Tomēr ir neliels skaits lietojumprogrammu, kurām ir jādarbojas fonā. Šeit ir daži lietotņu piemēri, kas operētājsistēmā iOS 5 var darboties fonā neierobežotu laiku.
- Lietojumprogrammas, kas atskaņo skaņu un ir kādu laiku jāpārtrauc (mūzikas pauze tālruņa zvana laikā utt.),
- Lietojumprogrammas, kas izseko jūsu atrašanās vietu (navigācijas programmatūra),
- Lietojumprogrammas, kas saņem VoIP zvanus, piemēram, ja izmantojat Skype, varat saņemt zvanu pat tad, ja programma darbojas fonā,
- Automātiskās lejupielādes (piem., Kiosks).
Visas lietojumprogrammas ir jāaizver, ja tās vairs neveic kādu uzdevumu (piemēram, fona lejupielādes). Tomēr ir izņēmumi, kas nepārtraukti darbojas fonā, piemēram, vietējā lietotne Mail. Ja tie darbojas fonā, tie aizņem atmiņu, CPU vai samazina akumulatora darbības laiku
Lietojumprogrammas, kurām ir atļauts darboties fonā neierobežotu laiku, var darīt visu, ko tās dara, kamēr tās darbojas, sākot no mūzikas atskaņošanas līdz jaunu Podcast epizožu lejupielādei.
Kā jau minēju iepriekš, lietotājam nekad nav jāaizver fonā strādājošās lietotnes. Vienīgais izņēmums ir gadījumi, kad lietotne, kas darbojas fonā, avarē vai nepamostas no miega režīma. Pēc tam lietotājs var manuāli aizvērt lietojumprogrammas vairākuzdevumu joslā, taču tas notiek reti.
Tātad kopumā jums nav jāpārvalda fona procesi, jo sistēma pati par tiem parūpēsies. Tāpēc iOS ir tik jauna un ātra sistēma.
No izstrādātāja viedokļa
Lietojumprogramma var reaģēt ar sešiem dažādiem stāvokļiem kā daļu no vairākuzdevumu veikšanas:
1. pieteikumsWillResignActive
Tulkojumā šis stāvoklis nozīmē, ka lietojumprogramma turpmāk (dažu milisekundu laikā) atteiksies kā aktīvā lietojumprogramma (tas ir, lietojumprogramma priekšplānā). Tas notiek, piemēram, saņemot zvanu lietojumprogrammas lietošanas laikā, bet tajā pašā laikā šī metode arī izraisa šo stāvokli, pirms programma pāriet fonā, tāpēc jums ir jāņem vērā šīs izmaiņas. Šī metode ir piemērota arī, piemēram, lai apturētu visas darbības, ko tā veic, kad ir ienākošs zvans, un gaidītu līdz zvana beigām.
2. applicationDidEnterBackground
Statuss norāda, ka lietojumprogramma ir pārgājusi fonā. Izstrādātājiem ir jāizmanto šī metode, lai apturētu visus procesus, kuriem nav obligāti jādarbojas fonā, un notīrītu neizmantoto datu atmiņu un citus procesus, piemēram, taimerus, kuru derīguma termiņš beidzas, ielādētu attēlu notīrīšanu no atmiņas, kas nav obligāti nepieciešami, vai aizvēršanu. savienojumus ar serveriem, ja vien lietojumprogrammai nav svarīgi fonā pabeigt savienojumus. Kad metode tiek izsaukta lietojumprogrammā, tā pamatā ir jāizmanto, lai pilnībā apturētu lietojumprogrammu, ja kādai tās daļai nav jādarbojas fonā.
3. applicationWillEnterForeground
Šis stāvoklis ir pretējs pirmajam stāvoklim, kurā lietojumprogramma pāries uz aktīvo stāvokli. Stāvoklis vienkārši nozīmē, ka miega lietotne atsāksies no fona un parādīsies priekšplānā dažu nākamo milisekunžu laikā. izstrādātājiem vajadzētu izmantot šo metodi, lai atsāktu visus procesus, kas bija neaktīvi, kamēr lietojumprogramma darbojās fonā. Savienojumi ar serveriem ir jāatjauno, taimeri ir jāatiestata, attēli un dati jāielādē atmiņā, un citi nepieciešamie procesi var atsākties tieši pirms lietotājs atkal redz ielādēto lietojumprogrammu.
4. ApplicationDidBecomeActive
Stāvoklis norāda, ka lietojumprogramma ir tikko kļuvusi aktīva pēc atjaunošanas priekšplānā. Šī ir metode, ko var izmantot, lai veiktu papildu pielāgojumus lietotāja interfeisā vai atjaunotu lietotāja saskarni sākotnējā stāvoklī utt. Tas faktiski notiek brīdī, kad lietotājs jau redz lietojumprogrammu displejā, tāpēc ir nepieciešams piesardzīgi nosakiet, kas notiek šīs un iepriekšējās metodes metodē. Tos sauc vienu pēc otra ar dažu milisekundu atšķirību.
5. pieteikumsWillTerminate
Šis stāvoklis notiek dažas milisekundes pirms lietojumprogrammas iziešanas, tas ir, pirms lietojumprogramma faktiski tiek pārtraukta. Vai nu manuāli no vairākuzdevumu veikšanas, vai arī izslēdzot ierīci. Metode jāizmanto, lai saglabātu apstrādātos datus, izbeigtu visas darbības un dzēstu datus, kas vairs nebūs vajadzīgi.
6. ApplicationDidReceiveMemoryWarning
Tas ir pēdējais stāvoklis, par kuru tiek runāts visvairāk. Tas ir atbildīgs par lietojumprogrammas izņemšanu no iOS atmiņas, ja tas lieki izmanto sistēmas resursus. Es nezinu, ko iOS dara ar fona lietotnēm, taču, ja tai ir nepieciešama lietotne, lai atbrīvotu resursus citiem procesiem, tas liek tai brīdināt par atmiņu, lai atbrīvotu visus tai pieejamos resursus. Tātad šī metode tiek izsaukta lietojumprogrammā. Izstrādātājiem tas jāīsteno tā, lai lietojumprogramma atteiktos no piešķirtās atmiņas, saglabātu visu notiekošo, iztīrītu no atmiņas nevajadzīgos datus un citādi adekvāti atbrīvotu atmiņu. Tiesa, daudzi izstrādātāji, pat iesācēji, par tādām lietām nedomā un nesaprot, un tad var gadīties, ka viņu aplikācija apdraud akumulatora darbības laiku un/vai lieki patērē sistēmas resursus pat fonā.
Spriedums
Šie seši stāvokļi un ar tiem saistītās metodes ir visas iOS “daudzuzdevumu veikšanas” fons. tā ir lieliska sistēma, ja vien izstrādātāji neņem vērā faktu, ka ir jābūt atbildīgiem par to, ko lietojumprogramma izmet viņu lietotāju ierīcēs, ja tās tiek samazinātas līdz minimumam vai saņem brīdinājumus no sistēmas utt.
Avots: Macworld.com
Autori: Jakubs Požāreks, Martins Dubeks (ArnieX)
Vai arī jums ir kāda problēma, kas jāatrisina? Vai jums ir nepieciešams padoms vai, iespējams, atrodat pareizo pielietojumu? Nevilcinieties sazināties ar mums, izmantojot sadaļā esošo veidlapu Konsultācijas, nākamreiz mēs atbildēsim uz jūsu jautājumu.
Sveiki, tiešām foršs raksts, bet nez vai jums ir kāds tehniskais atbalsts. Jo esmu vairākas reizes risinājusi akumulatoru vakarā pirms gulētiešanas un gadījās, ka ar atslēgtu wifi un mobilo datu paņēma vairāk nekā citā gadījumā ar izslēgtu wifi un tikai 3G.
Diemžēl pieredze ir tāda, ka iOS lietojumprogrammas ir jāizslēdz manuāli, un sistēma vairs nedarbojas tik labi kā iepriekš.
Nomainīju savu iPhone pret Windows Phone (Samsung Omnia W par 6200,-) un sistēmas ātrums ir pavisam citā līmenī.
Baidos, ka tad, kad iznāks Windows 8 Metro planšetdatori, nomainīšu arī iPad...
@007 – jā, ja salīdzina vecos iPhone3G ar jaunajiem WP, tad jā (kurš to būtu gaidījis?) WP būs krietni ātrāks. Citādi tev tās tenkas par Karlulku neiet un derēja salīdzināt pašreizējo HW. Es arī nopirku WP7 un beidzot saņēmu 4s, kas pārstāv pavisam citu lietojamības līmeni nekā WP7. Tāpēc ejiet patīkami un bezgalīgi ritiniet flīzes.
Pilnīgi piekrītu Pajam
Piedalītos atkal no citas mucas gruvešiem - Samsung Galaxy S un iPhone 4 - es teiktu salīdzināmi pēc vecuma? Operētājsistēmas iOS 4 laikā un lietojamības un ātruma ziņā nekur citur, nevis Android, Apple ir ļoti labi atrisinājis koncepciju par darbu ar aplikācijām, taču tas vairs nenotiek ar Android. Galu galā es tik un tā nonācu pie 4S un man nav nekādu pretenziju, jo "tas vienkārši darbojas" .. un tas darbojas ļoti ātri!
Teorija ir skaista... Bet praksē es joprojām aizveru aplikāciju bārā ;)
Paldies, ļoti interesanti, pragmatiski, interesanti, šūpoļu un dziļuma tajā netrūkst. Būtiski pasvītrojot mūsdienu jaunatnes apsēstību ar šo aizliegto zīmolu! Bet paldies viņai, kā arī par šo rakstu.
Raksts ir galīgi nepareizs.
Lietojumprogramma netiek aizvērta, kad tiek nospiesta poga Sākums, kā kļūdaini norādīts, bet apstājas. T.i. noteikti neizdzēsiet no atmiņas un nepametiet. Vienkārši apturiet darbību, iOS šai lietotnei piešķirs 0% CPU laika. Tas noteikti nekur iDevice atmiņā "nemainās", kā teikts rakstā. Tas patiešām ir pateicoties tam, ka ir iespējams izmantot lietotņu pārslēgšanu.
Lietojumprogramma tiek noņemta no atmiņas, ja tālrunī ir maz atmiņas, lai palaistu citas programmas ar augstāku prioritāti (parasti priekšplānā darbojas cita programma).
Pirmajā gadījumā jums ir taisnība, tā bija tulkošanas kļūda. Kas attiecas uz apmaiņu, mēs šeit nerunājam par to, mēs runājam par darbības atmiņu, nevis par atmiņas vietu iOS ierīcē.
lietojumprogrammas attēls tiek saglabāts atmiņā ierobežotu laiku, līdz tas atkal tiek izsaukts ar komandu (skatiet 13,7 GB no 16 GB: 2,3 GB ir rezervēti sistēmai un apturētajām lietojumprogrammām)
Līdz ar to ir jānošķir tādas aplikācijas kā Navigācija, Skype un tamlīdzīgi, šīs aplikācijas paliek aktīvas pat fonā, vai arī noteikta funkcija nebeidzas un turpina, piemēram, sūtīt datus par savu atrašanās vietu vai atrašanās vietas informāciju. Vai tāpat kā Vokul pord režīmā klausieties un vairākuzdevumu veikšana joprojām klausās fonā.
Šīs lietojumprogrammas izlādē akumulatoru, un tās ir jāaizver manuāli, nevis jāgaida iOS. ar citiem tas nav nepieciešams, tur tikai gadījumā, ja aplikācija nobrūk.
Nevaru piekrist rakstam. Min. 1. paaudzes iPad (iOS 5.0.1) ir skaidri redzams, vai man ir daudz "atvērtu" programmu daudzuzdevumu joslā vai tikai dažas. iOS gan mēģina iztīrīt atmiņu, taču ar to acīmredzami nepietiek – iespējams, ka tā lielākā vājā vieta ir mazais operatīvās atmiņas apjoms.
tāpēc daudz kas ir atkarīgs no sistēmas un izmantotās aparatūras, diezgan loģiski, ka iPad 1 ar iOS 5.0.1 tas būs sliktāk nekā tad, ja tas būtu uz 2. paaudzes iPad
Atvainojiet, draugs, šis ir apraksts par IDEĀLU veidu, kā tam vajadzētu darboties. Diemžēl realitāte ir pavisam cita, un jūs to zinātu, ja lietotu Apple produktus, vismaz tikpat daudz kā es (ti, reizēm).
"Bieži var dzirdēt māņticību, ka lietotnes, kas darbojas iOS fonā, aizpilda darbības atmiņu."
Tā nav māņticība, tas ir tikai fakts. Galu galā jūs pats to apgalvojat rakstā.
"Kā jau minēju iepriekš, lietotājam nekad nav jāaizver lietojumprogrammas, kas darbojas fonā."
NEKLĀTĪBA. Tās ir tikai muļķības, ābolu propaganda, nedusmojies uz mani.
“Bet jums tas nav jādara, jo iOS to darīs jūsu vietā. Ja fonā ir apturēta prasīga lietojumprogramma, piemēram, spēle, kurā tiek izmantots liels RAM apjoms, iOS nepieciešamības gadījumā to automātiski izņems no atmiņas, un jūs varat to restartēt, pieskaroties lietojumprogrammas ikonai.
Nav taisnība. Situācija ir nedaudz atšķirīga. Tipisks piemērs – man fonā darbojas prasīgas aplikācijas, vajag spēles. Palaižu pārlūkprogrammu, atveru pāris cilnes -> vajag vairāk atmiņas. Kas notiks? Sarežģītas aplikācijas paliek otrajā plānā, gluži otrādi, PATS PĀRLĀLS KRĪT. Ja prasīgās lietojumprogrammas aizveru manuāli, pārlūkprogramma darbojas ilgu laiku bez problēmām.
Tā ir prakse, nevis teorija. Un es esmu pārsteigts, ka jūs, būdams ilgstošs Apple produkta lietotājs, joprojām to nezināt.
Paldies, tas ir ļoti labi aprakstīts un labi izskaidrots. Tu man esi daudz palīdzējis ;-) ♥
Iesākumam es neesmu ne par, ne pret iOS, tāpat kā ar Android, bet šeit ir dažas dīvainības, ja kā šeit rakstīts: "jūs reti saskaraties ar aplikāciju avāriju iOS" tad Android lietotnēs crash par reizi gadā: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Jā, bet gadījumi, kad vajag manuāli aizvērt aplikāciju, tiešām ir minimāli, izmantoju kādu reizi? ;-) un iedot saiti uz salīdzinošo testu no Mobilemania ir diezgan bezjēdzīgi, kad gribu palasīt par reklāmu, ko Google maksāja, paskatīšos tur ;-) katrs var dabūt rokā jebkuru android telefonu un tā nedarbosies tīri, tas ir, izņemot Galaxy Nexus, jo sistēma ir vairāk vai mazāk pielāgota. Kopumā Android ir katastrofa
@Mek – es katru dienu lietoju Apple produktus jau vairākus gadus un ar mani tas nekad nav noticis, tāpēc tava teorija kaut kā nedarbojas.
NEZĀLES:
@redakce – Var redzēt, ka pie mājaslapas nemitīgi tiek strādāts vai ar to kaut kas notiek, bet man ir tāda sajūta, ka nepaiet ne nedēļa, lai viss darbotos kā nākas. Un es te vairs īsti nenāku, jo jaunais izskats man neder. Vismaz es izmantoju mobilo versiju iPhone, bet tagad tā nedarbojas vispār - kā tas ir? Pašlaik viņi neatbild uz ziņām komentāros.
@SteveJSF Diemžēl lietas ne vienmēr izdodas tā, kā mēs vēlamies. Kas attiecas uz atbildēm, jaunais SEO spraudnis tās salauza, pašlaik tas tiek atrisināts.
Arī WP-Touch kādu iemeslu dēļ pārtrauca mūsu pakalpojumu, tāpēc mēs nolēmām piedāvāt labāku risinājumu nekā šis spraudnis. Tātad drīzumā varat gaidīt nākamos jaunumus :-)
Jauks raksts. Kas attiecas uz praksi, tad gribu teikt, ka piekrītu vairākām lietām un lielākoties tas darbojas kā teikts, bet diemžēl joprojām ir slikti uzrakstīti iesniegumi, kas nerīkojas pareizi, un tad ir tādi gadījumi kā šis atzīmēja daži lasītāji. Es domāju, ka Skype ir ļoti labs piemērs, no prakses zinu, ka tas joprojām darbojas fonā (un tas ir labi un tā tam vajadzētu būt), bet problēma ir tāda, ka šī aplikācija ļoti izlādē ierīces akumulatoru un Es to vairs nevaru pareizi redzēt. Savukārt tādas lietojumprogrammas kā Facebook, Badoo u.c. tie arī joprojām darbojas fonā, bet to patēriņš ir gandrīz nemanāms (vismaz es nemanu). Tāpēc es domāju, ka kļūda ir atsevišķās lietojumprogrammās. Ja zinātu, kuras, pietiktu manuāli izslēgt tikai tās!
Tātad prakse ir tāda, ka Facebook darbojas pēc vajadzības un Skype tikai tad, kad nepieciešams.
Nu, savukārt, ja man vajag taupīt akumulatoru un zinu, ka pēc iespējas ilgāk jāuztur iPhone "dzīvs", arī multitaskingā izslēdzu visu nevajadzīgo, bet pārsvarā tam nav lielas ietekmes, bet, ja nepieciešams, ierobežoju 3G, visu mobilo internetu, WiFi, atrašanās vietas pakalpojumus, lidmašīnas režīmu, apgaismojuma stiprumu utt. Kā daļu no rutīnas izslēdzu arī iepriekš minētās aplikācijas multitaskingā.
Tāpēc personīgi es uzskatu, ka raksts ir patiess, diemžēl daži programmētāji šīs lietas atspēko ar savām aplikācijām, jo viņu aplikācijas ir nepareizas un, manuprāt, ir tikai divi risinājumi šim 1. Ja ir iespēja nelietot aplikāciju un atrast alternatīva, ja iespējams, vai 2. Ja tas nav iespējams, skatieties piem. Skype, ierakstiet to norādītajam programmētājam un ceriet, ka viņi kaut ko darīs.
Var būt bezjēdzīgi atspējot lietotnes manuāli, bet es to daru jebkurā gadījumā. Es arī mēģināju neizslēgt aplikāciju sistēmu, ļaut darboties (vai atstāt snaudu fonā) un akumulatora darbības laiks bija daudz mazāks, tāpat bija nepieciešams restartēt iPad 2 pēc apmēram trim nedēļām, tas reaģēja lēni. Tāpēc es izslēdzu lietotnes manuāli, akumulators darbojas ilgāk, es nesen pārstartēju Ziemassvētku dienā, un tas darbojas labi.
Starp citu, es daru to pašu operētājsistēmā Mac OS X, es vienkārši aizveru lietojumprogrammu, kas man nav vajadzīga (CMD+Q), tas ir labāk, nekā tas guļ fonā un lieki ēd RAM (ko OS X var t strādāt ar ļoti labi). Man ir maz RAM, tikai 8 GB, bet operētājsistēmā Windows 7 ar 8 GB, sistēma nereaģēja lēni vai nemainījās, operētājsistēmā OS X tā ir diezgan izplatīta parādība (nekad neizslēdzu datoru, es to daru arī ar Mac , tāpēc mēnesis un vairāk darbības laiks nav izņēmums, problēma ir tāda, ka man dažreiz ir jārestartē Mac, lai atbrīvotu RAM un "paātrinātu", Windows 7 tas nav nepieciešams).
Mani vairāk interesē, kā faktiski uzspridzināt lietojumprogrammu. Ar mani notika tas, ka lietojumprogramma (īpaši Geocaching) nokļuva stāvoklī, kurā tā kaut ko ielādēja no vecākservera, un iestrēga šajā stāvoklī. Poga Sākums darbojās, pēc pārstartēšanas tā atgriezās iesaldētā stāvoklī (kur es pārtraucu). Manuāla izeja (uz vairāku garšu izvēlni, turiet nospiestu ikonu un mīnuszīmi, lai aizvērtu) = lietojumprogramma pazuda, pēc restartēšanas tā tika atvērta sākotnējā stāvoklī, kur tā sastinga. Tā nu es visu aizvēru, izslēdzu telefonu, ieslēdzu, dubultklikšķu uz HOME un lūk - aplikācijas bija visas tādas, kādas bija pirms aizvēršanas īsi pirms izslēgšanas. Restartēšana arī nepalīdzēja - turiet mājās un augšējos, līdz kļūst karsts. Vienīgais, kas palīdzēja, bija aplikācijas noņemšana no tālruņa, restartēšana un pārinstalēšana tālrunī. Kaut kā nesaņēmu.
Šī daudzuzdevumu pārvaldība darbojas, un izstrādātājiem ir jātiek galā ar šīm situācijām. Tiem, kuriem interesē sīkāks un profesionālāks visas situācijas apraksts, uzrakstīšu šeit, kā ir.
Lietojumprogramma var reaģēt uz 6 stāvokļiem, un šie stāvokļi ir:
ApplicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
lietojumprogrammaDidBecomeActive
pieteikumsWillTerminate
applicationDidReceiveMemoryWarning
Tagad es mēģināšu aprakstīt šos stāvokļus sīkāk.
applicationWillResignActive – šis statuss nozīmē, ka turpmāk (dažu milisekunžu laikā) aplikācija atkāpsies kā aktīva aplikācija (t.i. aplikācija priekšplānā), tas notiek, piemēram, saņemot zvanu aplikācijas lietošanas laikā, bet tajā pašā laikā Laikā, kad šī metode tiks aktivizēta pat pirms lietojumprogramma pāriet fonā, tāpēc jums ir jāņem vērā šīs izmaiņas. Šī metode ir piemērota arī, piemēram, lai apturētu visas darbības, ko tā veic, kad ir ienākošs zvans, un gaidītu līdz zvana beigām.
applicationDidEnterBackground - šis statuss norāda, ka lietojumprogramma ir nonākusi fonā, izstrādātājiem jāizmanto šī metode, lai apturētu visus procesus, kuriem nav obligāti jādarbojas fonā, un iztīrītu neizmantoto datu un citu procesu atmiņu, piemēram, derīguma taimerus, notīrītu no atmiņā ielādēti attēli, kas ne vienmēr būs nepieciešami, vai pārtraukt savienojumu ar serveriem, ja lietojumprogrammai nav svarīgi pabeigt savienojumu fonā. Būtībā šī metode, kad tiek izsaukta lietojumprogramma, ir jāizmanto, lai pilnībā apturētu lietojumprogrammu, ja kādai tās daļai nav jādarbojas fonā.
applicationWillEnterForeground — šis stāvoklis ir pretējs pirmajam stāvoklim, kad lietojumprogramma pāries uz aktīvo stāvokli. Šis lietojumprogrammas stāvoklis vienkārši nozīmē, ka dažās nākamajās milisekundēs miega lietojumprogramma atsāksies no fona un parādīsies priekšplānā (lietojumprogramma nonāk priekšplānā), šī metode ir jāizmanto izstrādātājiem, lai atsāktu visus procesus, kas bija neaktīvi, kamēr lietojumprogramma bija fonā ir jāatjauno savienojumi ar serveriem, jāatiestata taimeris, jāielādē attēli un dati atmiņā, un citi nepieciešamie procesi var atsākties tieši pirms lietotājs atkal redz ielādēto lietojumprogrammu.
applicationDidBecomeActive – šis statuss norāda, ka lietojumprogramma ir tikko kļuvusi aktīva pēc atjaunošanas priekšplānā, šī ir metode, ar kuru var veikt papildu pielāgojumus lietotāja interfeisā vai atjaunot lietotāja saskarni sākotnējā stāvoklī utt. šī metode patiešām notiek. kad lietotājs jau var redzēt displejā, tāpēc no bilances ir jānosaka, kas notiek šajā un iepriekšējā metodē. Tos sauc vienu pēc otra ar dažu milisekundu atšķirību.
applicationWillTerminate — šis stāvoklis notiek dažas milisekundes pirms lietojumprogrammas darbības pārtraukšanas, tas ir, pirms lietojumprogramma faktiski tiek pārtraukta. Vai nu manuāli no vairākuzdevumu veikšanas, vai arī izslēdzot ierīci. Šī metode jāizmanto, lai saglabātu apstrādātos datus un izbeigtu visas darbības un dzēstu datus, kas vairs nebūs vajadzīgi.
applicationDidReceiveMemoryWarning - un tas ir nosacījums, par kuru šeit ir daudz runāts, nepieciešamības gadījumā iOS izņems aplikāciju no atmiņas, ja tā lieki izmantos sistēmas resursus. Es precīzi nezinu, ko iOS dara ar fona lietotnēm, taču, ja tai ir nepieciešama lietotne, lai atbrīvotu resursus citiem procesiem, tā ar atmiņas brīdinājumu liek atbrīvot tajā esošos resursus. Tātad šī metode tiek izsaukta lietojumprogrammā, un izstrādātājiem tā jāīsteno, lai lietojumprogramma atdotu tai esošo atmiņu, saglabātu apstrādātos un dzēstu no atmiņas nevajadzīgos datus, kā arī citādi adekvāti atbrīvotu atmiņu. Tiesa, daudzi izstrādātāji, piemēram, iesācēji, par tādām lietām neaizdomājas vai nesaprot, un tad var gadīties, ka viņu aplikācija apdraud akumulatora darbības laiku un/vai pat fonā lieki patērē sistēmas resursus. Nezinu, kā iOS uzvedīsies, ja aplikācija pēc atmiņas brīdinājuma saņemšanas neko nedarīs un turpinās patērēt sistēmas resursus kā līdz šim.
Šie daži stāvokļi un saistītās metodes ir aiz visa iOS "daudzuzdevumu veikšanas"... tā ir lieliska sistēma, ja izstrādātāji neņem vērā vajadzību būt atbildīgiem par to, ko lietotnes radīs lietotāju ierīcēs, ja tās tiks samazinātas līdz minimumam. vai saņemiet brīdinājumus no sistēmas un daudz ko citu…
Es ceru, ka šis īsais apraksts palīdzēs jums saprast, kā lietojumprogramma ir iesaistīta, lai viss darbotos nevainojami. Līdz ar to gandrīz var teikt, ka tā ir lietotāja nepareizas lietošanas kļūda, ko var saprast tā - ja lielā skaitā izmantosiet pārsvarā amatieru izstrādātāju bezmaksas aplikācijas, jūsu iOS ierīce darbosies sliktāk nekā tad, ja lietosiet lielu bezmaksas un maksas lietojumprogrammu skaits no pieredzējušiem vai profesionāliem izstrādātājiem. Tas nenozīmē, ka abās aprindās nav izņēmumu. Piemēram, foursquare uzvedas diezgan dīvaini un prasīgi, un tajā pašā laikā jau varētu sagaidīt, ka tie ir ļoti prasmīgi izstrādātāji, kas daudz laika velta atmiņas un bateriju pārvaldībai, taču ir otrādi. Lielākā 4SQ problēma ir saziņa ar serveriem, kas bieži uzkaras un ir pārslogota. Šis ir tikai piemērs tam, ka pat labi zināmām aplikācijām ir problēmas, kas nemaina faktu, ka 4SQ ir lielisks serviss.
Lai jums jautri āboli!! :)
Informāciju rakstam pievienojām ar autora laipnu atļauju ;-)
Atvainojos, starp rindkopām visur bija ENTER, te varētu kaut ko darīt, lai komentāros būtu vismaz mazliet BAGĀTINĀTA TEKSTA FORMĒŠANA.
ArnieX: paldies par komentāru!!
Faramiram: Es tikai par jūsu problēmu, es nezinu, vai tas palīdzēs jūsu gadījumā, bet es zinu no savas pieredzes, ka, ja aizverat lietojumprogrammu (vairākuzdevumu veikšanā), paiet dažas sekundes, līdz tā aizveras, tādēļ, ja jūs to izslēdzat, es iesaku pagaidīt dažas sekundes (es es gaidu apmēram 10 sekundes, lai pārliecinātos), līdz tas noteikti ir pabeigts, un tikai tad es to atsāku.
Esiet laipni gaidīti ;) Labprāt palīdzēšu, ja būs iespēja dot savu ieguldījumu.
Kā vajadzētu būt ar Meeb, kad es caur to pieslēdzos ICQ vai FB čatā, tas automātiski izrakstās pēc 10 minūtēm un es pāreju bezsaistē vai turpina strādāt? paldies par skaidrojumu :P
Pēc desmit minūtēm lietojumprogrammas savienojums ar internetu tiek vienkārši pārtraukts. Tomēr jūs joprojām būsiet tiešsaistē Meeba serverī un saņemsiet push paziņojumu, ja kāds jums rakstīs. Pēc lietojumprogrammas atkārtotas atvēršanas savienojums tiks izveidots pēc mirkļa un jūs varat turpināt laimīgu tērzēšanu.
Tātad, ja pareizi sapratu jūsu piesaistīto rakstu, statistika attiecas tikai uz lietojumprogrammu avārijām, kad tās sākas, kas ir diezgan maza daļa gadījumu, kad var rasties avārijas. Tāpēc no šī "pētījuma" nav iespējams secināt, ka iOS, manuprāt, ir mazāk stabils. Turklāt no Forbes paņemtā raksta tulkotājs aizmirsa pieminēt, ka uzņēmumu, kas sniedz datus par lietojumprogrammu avārijām, cita starpā atbalsta arī Google ("Crittercism, that is backed by Google Ventures,...").