Még mindig sokan nem tudják, hogyan működik a multitasking iOS rendszerben. Kezdetnek azonban le kell szögezni, hogy ez nem igazi multitasking, hanem egy nagyon okos megoldás, amely nem terheli sem a rendszert, sem a felhasználót.
Gyakran hallani olyan babonákat, hogy az iOS-ben a háttérben futó alkalmazások megtöltik az operációs memóriát, ami a rendszer lelassulásához és az akkumulátor élettartamához vezet, ezért a felhasználónak manuálisan kell kikapcsolnia őket. A többfeladatos sáv valójában nem tartalmazza az összes futó háttérfolyamat listáját, hanem csak a legutóbb elindított alkalmazásokat. Így a felhasználónak néhány eset kivételével nem kell aggódnia a háttérben futó folyamatok miatt. A Home gomb megnyomásakor az alkalmazás általában alvó üzemmódba kapcsol vagy bezár, így már nem tölti a processzort vagy az akkumulátort, és szükség esetén felszabadítja a szükséges memóriát.
Tehát ez nem teljes értékű multitasking, ha több tucat folyamat fut, mindig csak egy alkalmazás fut az előtérben, amelyet szükség esetén szüneteltetnek vagy teljesen kikapcsolnak. Csak néhány másodlagos folyamat fut a háttérben. Emiatt ritkán találkozhatsz alkalmazás-összeomlással iOS-en, például az Androidot túlterhelték a futó alkalmazások, amelyekről a felhasználónak kell gondoskodnia. Ez egyrészt kellemetlenné teszi az eszközzel való munkát, másrészt például lassú indítást és átállást okoz az alkalmazások között.
Alkalmazás futásidejű típusa
Az iOS-eszközön lévő alkalmazás az alábbi 5 állapot egyikében van:
- Futás: az alkalmazás elindul és fut az előtérben
- Háttér: még mindig fut, de a háttérben fut (más alkalmazásokat is használhatunk)
- Felfüggesztett: Még mindig RAM-ot használ, de nem fut
- Inaktív: az alkalmazás fut, de közvetett parancsok (például amikor lezárja az eszközt, miközben az alkalmazás fut)
- Nem fut: Az alkalmazás leállt, vagy nem indult el
A zavar akkor jön létre, amikor az alkalmazás a háttérbe megy, hogy ne zavarjon. Ha megnyomja a Kezdőlap gombot, vagy a mozdulattal bezárja az alkalmazást (iPad), az alkalmazás a háttérbe kerül. A legtöbb alkalmazás pillanatokon belül felfüggesztésre kerül (az iDevice RAM-jában tárolódnak, így gyorsan elindíthatók, nem terhelik annyira a processzort, és így kímélik az akkumulátor élettartamát) Azt gondolhatja, hogy ha egy alkalmazás továbbra is memóriát használ, akkor kézi törléséhez a felszabadításhoz . De ezt nem kell megtenned, mert az iOS megteszi helyetted. Ha a háttérben felfüggesztett egy igényes alkalmazást, például egy nagy mennyiségű RAM-ot használó játékot, az iOS szükség esetén automatikusan eltávolítja a memóriából, és az alkalmazás ikonjára koppintva újraindíthatja.
Ezen állapotok egyike sem jelenik meg a többfeladatos sávon, a panel csak a nemrég elindított alkalmazások listáját mutatja, függetlenül attól, hogy az alkalmazás le van állítva, szünetel, vagy a háttérben fut. Azt is észreveheti, hogy az éppen futó alkalmazás nem jelenik meg a Multitasking panelen
Háttérfeladatok
Általában a Kezdőlap gomb megnyomásakor az alkalmazás a háttérben fut, és ha nem használja, akkor öt másodpercen belül automatikusan leáll. Tehát ha például egy podcastot tölt le, a rendszer futó alkalmazásként értékeli, és tíz perccel késlelteti a befejezést. Legkésőbb tíz perc elteltével a folyamat felszabadul a memóriából. Röviden: nem kell attól tartanod, hogy a letöltés megszakad a Kezdőlap gomb megnyomásával, ha a letöltés nem tart tovább 10 percnél.
Határozatlan futás a háttérben
Inaktivitás esetén a rendszer öt másodpercen belül leállítja az alkalmazást, letöltések esetén pedig tíz percet késik a megszüntetés. Vannak azonban olyan alkalmazások, amelyek a háttérben futnak. Íme néhány példa azokra az alkalmazásokra, amelyek korlátlan ideig futhatnak a háttérben az iOS 5 rendszerben:
- Olyan alkalmazások, amelyek hangot játszanak le, és egy időre meg kell szakítani (a zene szüneteltetése telefonhívás közben stb.),
- Alkalmazások, amelyek nyomon követik az Ön tartózkodási helyét (navigációs szoftver),
- VoIP-hívásokat fogadó alkalmazások, például ha Skype-ot használ, akkor is fogadhat hívást, ha az alkalmazás a háttérben működik,
- Automatikus letöltések (pl. Újságos).
Minden alkalmazást be kell zárni, ha már nem hajtanak végre egy feladatot (például a háttérben történő letöltéseket). Vannak azonban kivételek, amelyek folyamatosan futnak a háttérben, például a natív Mail alkalmazás. Ha a háttérben futnak, elfoglalják a memóriát, a CPU-használatot vagy csökkentik az akkumulátor élettartamát
Azok az alkalmazások, amelyek korlátlanul futhatnak a háttérben, bármit megtehetnek futás közben, a zenelejátszástól az új Podcast-epizódok letöltéséig.
Ahogy korábban említettem, a felhasználónak soha nem kell bezárnia a háttérben futó alkalmazásokat. Ez alól az egyetlen kivétel, ha egy háttérben futó alkalmazás összeomlik, vagy nem ébred fel megfelelően az alvó állapotból. A felhasználó ezután manuálisan bezárhatja az alkalmazásokat a többfeladatos sávban, de ez ritkán fordul elő.
Tehát általában nem kell háttérfolyamatokat kezelnie, mert a rendszer maga gondoskodik róluk. Ezért az iOS olyan friss és gyors rendszer.
Fejlesztői szemszögből
Az alkalmazás összesen hat különböző állapottal reagálhat a multitasking részeként:
1. applicationWillResignActive
A fordításban ez az állapot azt jelenti, hogy az alkalmazás a jövőben (néhány ezredmásodperc alatt) lemond aktív alkalmazásról (vagyis az előtérben lévő alkalmazásról). Ez történik például, amikor az alkalmazás használata közben hívás érkezik, ugyanakkor ez a módszer is ezt az állapotot okozza, mielőtt az alkalmazás háttérbe kerülne, ezért ezeket a változásokat figyelembe kell venni. Ez a módszer arra is alkalmas, hogy például bejövő hívás esetén minden általa végzett tevékenységet felfüggeszt, és megvárja a hívás végét.
2. applicationDidEnterBackground
Az állapot azt jelzi, hogy az alkalmazás háttérbe került. A fejlesztőknek ezt a módszert kell használniuk minden olyan folyamat felfüggesztésére, amelyeknek nem feltétlenül a háttérben kell futniuk, és törölniük kell a fel nem használt adatok és egyéb folyamatok memóriáját, például a lejárati időzítőket, a betöltött képeket a memóriából, amelyekre nem feltétlenül lesz szükség, vagy a bezárást. kapcsolatokat a szerverekkel, kivéve, ha az alkalmazás számára kritikus, hogy a kapcsolatokat a háttérben befejezze. Amikor a metódus meghívásra kerül az alkalmazásban, akkor alapvetően az alkalmazás teljes felfüggesztésére kell használni, ha annak egy része nem szükséges a háttérben futni.
3. applicationWillEnterForeground
Ez az állapot az első állapot ellentéte, ahol az alkalmazás visszalép az aktív állapotba. Az állapot egyszerűen azt jelenti, hogy az alvó alkalmazás a háttérből folytatódik, és a következő néhány ezredmásodpercben megjelenik az előtérben. a fejlesztőknek ezt a módszert kell használniuk minden olyan folyamat folytatásához, amely inaktív volt, amíg az alkalmazás a háttérben volt. Újra kell építeni a kapcsolatot a szerverekkel, vissza kell állítani az időzítőket, be kell tölteni a képeket és az adatokat a memóriába, és az egyéb szükséges folyamatok folytatódhatnak közvetlenül azelőtt, hogy a felhasználó újra látná a betöltött alkalmazást.
4. ApplicationDidBecomeActive
Az állapot azt jelzi, hogy az alkalmazás éppen most vált aktívvá, miután visszaállították az előtérbe. Ez egy olyan módszer, amellyel a felhasználói felületen további beállításokat végezhetünk, vagy visszaállíthatjuk a felhasználói felületet az eredeti állapotba stb. Ez valójában abban a pillanatban történik meg, amikor a felhasználó már látja az alkalmazást a kijelzőn, ezért szükséges körültekintően határozzuk meg, mi történik ebben és az előző módszerben. Egymás után hívják őket néhány ezredmásodperces eltéréssel.
5. applicationWillTerminate
Ez az állapot néhány ezredmásodperccel az alkalmazás kilépése előtt következik be, vagyis az alkalmazás tényleges leállása előtt. Akár manuálisan multitaskingból, akár az eszköz kikapcsolásakor. A módszert a feldolgozott adatok mentésére, az összes tevékenység befejezésére és a már nem szükséges adatok törlésére kell használni.
6. applicationDidReceiveMemoryWarning
Ez az utolsó állapot, amelyről a legtöbbet beszélnek. Felelős, hogy szükség esetén eltávolítsa az alkalmazást az iOS memóriából, ha az szükségtelenül használja a rendszer erőforrásait. Konkrétan nem tudom, hogy az iOS mit csinál a háttéralkalmazásokkal, de ha szüksége van egy alkalmazásra, hogy erőforrásokat szabadítson fel más folyamatok számára, akkor egy memóriafigyelmeztetéssel kéri, hogy engedje el a meglévő erőforrásokat. Tehát ezt a módszert hívják az alkalmazásban. A fejlesztőknek úgy kell megvalósítaniuk, hogy az alkalmazás feladja az általa lefoglalt memóriát, mindent elmentsen, ami folyamatban van, törölje a felesleges adatokat a memóriából, és egyébként megfelelően szabadítson fel memóriát. Igaz, sok fejlesztő, még a kezdő is, nem gondolkodik és nem érti az ilyesmit, és akkor megtörténhet, hogy az alkalmazásuk fenyegeti az akkumulátor élettartamát és/vagy feleslegesen fogyasztja a rendszer erőforrásait, akár a háttérben is.
Ítélet
Ez a hat állapot és a hozzájuk kapcsolódó módszerek képezik az iOS összes "multitasking" hátterét. ez egy nagyszerű rendszer, mindaddig, amíg a fejlesztők nem hagyják figyelmen kívül azt a tényt, hogy felelősséget kell vállalni azért, hogy az alkalmazás mit dob fel a felhasználók eszközére, ha minimalizálják őket, vagy figyelmeztetéseket kapnak a rendszertől és így tovább.
Forrás: Macworld.com
Szerzői: Jakub Požárek, Martin Doubek (ArnieX)
Önnek is van megoldandó problémája? Tanácsra van szüksége, vagy esetleg megtalálja a megfelelő alkalmazást? Ne habozzon kapcsolatba lépni velünk a részben található űrlapon keresztül Tanácsadás, legközelebb válaszolunk kérdésére.
Helló, nagyon klassz cikk, de kíváncsi vagyok, van-e ehhez technikai támogatása. Mert este lefekvés előtt többször is megoldottam az akkut és előfordult, hogy kikapcsolt wifivel és mobil adatátvitellel többet tartott, mint más esetben kikapcsolt wifivel és csak 3G-vel.
Sajnos az a tapasztalat, hogy iOS-ben manuálisan kell kikapcsolni az alkalmazásokat, és már nem fut olyan jól a rendszer, mint korábban.
Az iPhone-omat lecseréltem egy Windows Phone-ra (Samsung Omnia W 6200,-) és a rendszer sebessége teljesen más szinten van.
Félek, hogy ha megjelennek a Windows 8 Metro tabletek, akkor az iPadet is lecserélem...
@007 – igen, ha a régi iPhone3G-ket hasonlítod össze az új WP-sekkel, akkor igen (ki számított volna erre?) a WP valamivel gyorsabb lesz. Egyébként a Karlulkáról szóló pletyka nem esik jól neked és illett összehasonlítani a jelenlegi HW-t. Vettem WP7-et is és végül a 4s-hez kötöttem, ami teljesen más használhatósági szintet képvisel, mint a WP7. Így kellemesen és végtelenül görgesse a lapokat.
Teljesen egyetértek Pajaval
Hozzájárulnék ismét egy másik hordó - Samsung Galaxy S és iPhone 4 - törmelékéből - korát tekintve összehasonlíthatónak mondanám? Az iOS 4 idején és az Androidon kívül máshol használhatóság és sebesség tekintetében az Apple nagyon jól megoldotta az alkalmazásokkal való munka koncepcióját, de ez már nem igaz az Androidra. Végül úgyis a 4S-nél kötöttem ki és nincs panaszom, mert "csak működik" .. és nagyon gyorsan!
Az elmélet gyönyörű... De a gyakorlatban még mindig a bárban zárom be az alkalmazást ;)
Köszönöm, nagyon érdekes, pragmatikus, érdekes, nem hiányzik a lendület és a mélység. Jelentősen aláhúzva a mai fiatalok megszállottságát ez a tiltott márka! De köszönöm neki, és ezt a cikket is.
Teljesen rossz a cikk.
Az alkalmazás nem lép ki a Kezdőlap gomb megnyomásakor, amint azt tévesen jeleztük, hanem szünetel. Azaz. határozottan ne törölje a memóriából, és ne lépjen ki. Csak állítsa le a futást, az iOS 0% CPU-időt fog adni ennek az alkalmazásnak. A cikkben leírtak szerint határozottan nem "cserélődik" sehol az iDevice memóriájában. Ez valóban annak köszönhető, hogy lehetőség van az alkalmazásváltás használatára.
Az alkalmazás eltávolításra kerül a memóriából, ha a telefonnak kevés memóriája van más, magasabb prioritású alkalmazások futtatásához (általában egy másik alkalmazás fut az előtérben).
Az első esetben igazad van, fordítási hiba volt. Ami a cserét illeti, itt nem arról van szó, hanem a működési memóriáról, nem az iOS készülék tárhelyéről.
az alkalmazás képe korlátozott ideig tárolódik a memóriában, amíg egy parancs ismét meg nem hívja (lásd: 13,7 GB a 16 GB-ból: a 2,3 GB a rendszer és a felfüggesztett alkalmazások számára van fenntartva)
Így különbséget kell tenni az olyan alkalmazások között, mint a Navigáció, a Skype és hasonlók, ezek az alkalmazások a háttérben is aktívak maradnak, vagy egy bizonyos funkció nem ér véget, és például tovább küldi az adatokat a helyéről vagy a helyinformációról. Vagy mint Vokul pord módban, figyelj, és a multitasking továbbra is hallgat a háttérben.
Ezek az alkalmazások lemerítik az akkumulátort, és manuálisan be kell zárni őket, és nem kell várni az iOS-re. másokkal nem szükséges, ott csak abban az esetben, ha az alkalmazás összeomlik.
Nem tudok egyetérteni a cikkel. Min. 1. generációs iPaden (iOS 5.0.1) jól látható, hogy sok "nyitott" alkalmazás van-e a többfeladatos sávban, vagy csak néhány. Az iOS megpróbálja megtisztítani a memóriát, de ez nyilvánvalóan nem elég - a RAM kis mérete valószínűleg a legnagyobb gyengesége.
szóval sok múlik a rendszeren és a használt hardveren, teljesen logikus, hogy az iOS 1-es iPad 5.0.1-en rosszabb lesz, mintha egy 2. generációs iPaden lenne
Elnézést, barátom, ez az IDEÁLIS működési mód leírása. Sajnos a valóság teljesen más, és ezt te is tudnád, ha Apple termékeket használnál, legalább annyit, mint én (vagyis alkalmanként).
"Gyakran hallani azt a babonát, hogy az iOS háttérben futó alkalmazások feltöltik az operációs memóriát"
Ez nem babona, csak tény. Végül is ezt te magad állítod a cikkben.
"Mint már említettem, a felhasználónak soha nem kell bezárnia a háttérben futó alkalmazásokat."
OSTOBASÁG. Ez csak baromság, almás propaganda, ne haragudj rám.
„De ezt nem kell megtenned, mert az iOS megteszi helyetted. Ha a háttérben felfüggesztett egy igényes alkalmazást, például egy nagy mennyiségű RAM-ot használó játékot, az iOS szükség esetén automatikusan eltávolítja a memóriából, és az alkalmazás ikonjára koppintva újraindíthatja.”
Nem igaz. A helyzet egy kicsit más. Tipikus példa – igényes alkalmazások futnak a háttérben, játékok kellenek. Elindítom a böngészőt, megnyitok pár lapot -> több memória kell. Mi fog történni? Igényes alkalmazásokat tartok a háttérben, ellenkezőleg, MAGA A BÖNGÉSZŐ BUSZIK. Ha manuálisan bezárom az igényes alkalmazásokat, akkor a böngésző sokáig gond nélkül működik.
Ez gyakorlat, nem elmélet. És meglep, hogy egy Apple-termék hosszú távú felhasználójaként ezt még mindig nem tudja.
Köszönöm, ez nagyon jól van leírva és jól elmagyarázva. Sokat segítettél nekem ;-) ♥
Kezdésnek nem vagyok sem iOS mellett, sem ellene, mint az Androidnál, de van itt pár furcsaság, ha ahogy itt írják: "iOS-on ritkán találkozik alkalmazás-összeomlással" akkor Androidon kb. évente egyszer: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Igen, de azok az esetek, amikor manuálisan kell bezárni az alkalmazást, valóban minimálisak, kb egyszer használtam? ;-) és a Mobilmániás összehasonlító teszt linkjét megadni elég értelmetlen, ha a Google által fizetett reklámokról akarok olvasni, akkor ott megnézem ;-) mindenki bármilyen androidos telefont kaphat a kezébe és az nem fog tisztán futni, vagyis a Galaxy Nexus kivételével, vagyis a rendszer többé-kevésbé személyre szabott. Összességében az android egy katasztrófa
@Mek – Több éve használom naponta az Apple termékeket, és ez még soha nem fordult elő velem, szóval az elméleted valahogy nem működik.
OT:
@redakce – Látszik, hogy folyamatosan dolgoznak a weboldalon, vagy történik vele valami, de az az érzésem, hogy nem kell egy hét, hogy minden úgy működjön, ahogy kellene. És már nem is nagyon járok ide, mert nem jön be az új külső. Én legalábbis a mobil verziót használtam iPhone-on, de most már egyáltalán nem működik – hogy lehet? Jelenleg nem válaszolnak a hozzászólásokban lévő bejegyzésekre.
@SteveJSF Sajnos a dolgok nem mindig úgy alakulnak, ahogy szeretnénk. Ami a válaszokat illeti, az új SEO bővítmény feltörte őket, jelenleg a megoldása folyik.
A WP-Touch is megszüntette valamiért a szolgáltatásunkat, ezért úgy döntöttünk, hogy ennél a bővítménynél jobb megoldást találunk ki. Szóval hamarosan várhatod a következő hírt :-)
Szép cikk. Ami a gyakorlatot illeti, azt szeretném elmondani, hogy több dologgal egyetértek, és legtöbbször a leírtak szerint működik, de sajnos még mindig vannak rosszul megírt pályázatok, amelyek nem viselkednek megfelelően, aztán vannak ilyen esetek. néhány olvasó megjegyezte. Szerintem a Skype nagyon jó példa, gyakorlatból tudom, hogy még fut a háttérben (és ez így van rendjén és így kell lennie), de az a baj, hogy ez az alkalmazás nagyon lemeríti a készülék akkumulátorát és Már nem látom rendesen. Ezzel szemben az olyan alkalmazások, mint a Facebook, Badoo stb. ezek is futnak még a háttérben, de szinte észrevehetetlen a fogyasztásuk (legalábbis én nem veszem észre). Szóval szerintem a hiba az egyes alkalmazásokban van. Ha tudnád, hogy melyiket, akkor elég lenne manuálisan csak azokat kikapcsolni!
Tehát a gyakorlat az, hogy a Facebook szükség szerint fut, a Skype pedig csak akkor, amikor szükséges.
Nos, viszont ha spórolni kell az akkumulátorral, és tudom, hogy az iPhone-t minél tovább "életben kell tartanom", akkor a multitaskingban is kikapcsolok mindent, ami felesleges, de többnyire nincs nagy hatása, de ha kell, korlátozom a 3G-t, minden mobilinternetet, WiFi-t, helymeghatározó szolgáltatásokat, repülőgép üzemmódot, világítási erősséget, stb. A rutin részeként a multitaskingban is kikapcsolom az előbb említett alkalmazásokat.
Tehát személy szerint úgy gondolom, hogy a cikk igaz, sajnos néhány programozó ezt cáfolja az alkalmazásaival, mert az alkalmazásuk hibás és véleményem szerint erre csak két megoldás létezik 1. Ha lehetséges, hogy ne használja az alkalmazást és találjon egy alternatíva, ha lehet, vagy 2. Ha nem lehetséges, akkor lásd pl.: Skype, írd be a jelentésbe az adott programozónak, és reméljük, hogy csinálnak valamit.
Lehet, hogy értelmetlen manuálisan letiltani az alkalmazásokat, de mégis megteszem. Az applikációs rendszert is próbáltam nem kikapcsolni, futni hagyni (vagy a háttérben aludni hagyni) és az akkumulátor élettartama is jóval alacsonyabb volt, kb három hét után újra kellett indítani az iPad 2-t is, lassan reagált. Szóval manuálisan kapcsolom ki az alkalmazásokat, tovább bírja az akku, nemrég karácsonykor újraindítottam és jól megy.
Egyébként a Mac OS X-ben is ugyanezt csinálom, csak bezárom azt az alkalmazást, amire nincs szükségem (CMD+Q), jobb, mintha a háttérben aludna és feleslegesen zabálná a RAM-ot (amit az OS X tud t nagyon jól működik). Kevés RAM-om van, csak 8 GB, de a 7 GB-os Windows 8-ben nem reagált lassan a rendszer vagy nem cserélt, OS X-ben ez elég gyakori jelenség (soha nem kapcsoltam ki a számítógépet, Mac-el is csinálom , tehát egy hónap és több üzemidő sem kivétel, a probléma az, hogy időnként elővigyázatosságból újra kell indítanom a Mac-et a RAM felszabadításához és a "gyorsításhoz", a Windows 7-nek erre nincs szüksége).
Engem inkább az érdekel, hogyan lehet ténylegesen felrobbantani az alkalmazást. Velem az történt, hogy az alkalmazás (konkrétan a Geocachingen) olyan állapotba került, hogy a szülőszerverről tölt be valamit, és ebben az állapotban elakadt. A Home gomb működött, újraindítás után visszaállt a fagyott állapotba (ahol abbahagytam). Kézi kilépés (a többízű menübe, tartsa lenyomva az ikont és a mínuszt a bezáráshoz) = az alkalmazás eltűnt, újraindítás után megnyílt az eredeti állapotában, ahol lefagyott. Így hát bezártam mindent, kikapcsoltam a telefont, bekapcsoltam, duplán kattintottam a HOME-ra, és tessék - az alkalmazások mind ott voltak, mint a bezárás előtt, közvetlenül a kikapcsolás előtt. Az újraindítás sem segített - tartsd otthon és a felsőben, amíg fel nem melegszik. Az egyetlen dolog, ami segített, az az alkalmazás eltávolítása a telefonról, újraindítása és újratelepítése a telefonra. Valahogy nem vettem fel.
Ez a Multitasking menedzsment működik, és a fejlesztők feladata, hogy megbirkózzanak ezekkel a helyzetekkel. Akit érdekel az egész helyzet részletesebb és szakszerűbb leírása, annak ide írom, hogy is van ez.
Az alkalmazás összesen 6 állapotra reagálhat, ezek az állapotok a következők:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
applicationWillTerminate
applicationDidReceiveMemoryWarning
Most megpróbálom részletesebben leírni ezeket az állapotokat.
applicationWillResignActive – ez az állapot azt jelenti, hogy a jövőben (néhány ezredmásodperc alatt) az alkalmazás aktív alkalmazásként (vagyis az előtérben lévő alkalmazásként) lemond, ez történik például az alkalmazás használata közbeni hívás fogadásakor, de ugyanakkor Ez a módszer még azelőtt aktiválódik, hogy az alkalmazás háttérbe kerülne, ezért ezeket a változtatásokat figyelembe kell vennie. Ez a módszer arra is alkalmas, hogy például bejövő hívás esetén minden általa végzett tevékenységet felfüggeszt, és megvárja a hívás végét.
applicationDidEnterBackground - ez az állapot azt jelzi, hogy az alkalmazás belépett a háttérbe, a fejlesztőknek ezzel a módszerrel kell felfüggeszteniük az összes olyan folyamatot, amelyeknek nem kell feltétlenül a háttérben futniuk, és meg kell tisztítani a memóriát a fel nem használt adatoktól és egyéb folyamatoktól, például lejárati időzítőktől. memóriába betöltött képek, amelyekre nem feltétlenül lesz szükség, vagy megszakítják a kapcsolatot a szerverekkel, ha az alkalmazás számára nem kritikus a kapcsolat létrehozása a háttérben. Alapvetően ezt a módszert az alkalmazásban meghívva az alkalmazás teljes felfüggesztésére kell használni, ha annak egy része nem szükséges a háttérben futni.
applicationWillEnterForeground – ez az állapot az első állapot ellentéte, amikor az alkalmazás visszalép az aktív állapotba. Ez az alkalmazás állapot egyszerűen azt jelenti, hogy a következő néhány ezredmásodpercben az alvó alkalmazás a háttérből folytatódik, és az előtérben jelenik meg (az alkalmazás belép az előtérbe), ezt a módszert kell használni a fejlesztőknek minden olyan folyamat folytatásához, amely inaktív volt, amíg az alkalmazás volt. a háttérben helyre kell állítani a kapcsolatot a szerverekkel, vissza kell állítani az időzítőket, be kell tölteni a képeket és az adatokat a memóriába, és az egyéb szükséges folyamatok folytatódhatnak, mielőtt a felhasználó újra látná a betöltött alkalmazást.
applicationDidBecomeActive – ez az állapot azt jelzi, hogy az alkalmazás éppen most vált aktívvá, miután visszaállították az előtérbe. Ez egy olyan módszer, amellyel további beállításokat végezhet a felhasználói felületen, vagy visszaállíthatja a felhasználói felületet az eredeti állapotába stb. amikor a felhasználó már látja a kijelzőn, ezért a mérlegből meg kell határozni, hogy mi történik ennél és az előző módszernél. Egymás után hívják őket néhány ezredmásodperces eltéréssel.
applicationWillTerminate - ez az állapot néhány ezredmásodperccel az alkalmazás leállása előtt következik be, vagyis az alkalmazás tényleges leállása előtt. Akár manuálisan multitaskingból, akár az eszköz kikapcsolásakor. Ezt a módszert kell használni a feldolgozott adatok mentésére, valamint az összes tevékenység befejezésére és az adatok törlésére, amelyekre már nincs szükség.
applicationDidReceiveMemoryWarning - és ez itt sokat tárgyalt feltétel, szükség esetén az iOS eltávolítja az alkalmazást a memóriából, ha feleslegesen használja a rendszererőforrásokat. Nem tudom pontosan, hogy az iOS mit csinál a háttéralkalmazásokkal, de ha szüksége van egy alkalmazásra, hogy erőforrásokat szabadítson fel más folyamatok számára, akkor egy memóriafigyelmeztetéssel kéri, hogy engedje fel a tárolt erőforrásokat. Tehát ezt a módszert hívják meg az alkalmazásban, és a fejlesztőknek úgy kell megvalósítaniuk, hogy az alkalmazás feladja a birtokában lévő memóriát, mentse a feldolgozott adatokat és törölje a felesleges adatokat a memóriából, és egyébként megfelelően felszabadítsa a memóriát. Igaz, sok fejlesztő, például kezdők nem gondolnak ilyesmire, vagy nem értik őket, és ekkor előfordulhat, hogy alkalmazásuk az akkumulátor élettartamát veszélyezteti és/vagy a háttérben is feleslegesen fogyasztja a rendszer erőforrásait. Nem tudom, hogyan fog viselkedni az iOS, ha az alkalmazás nem csinál semmit, miután megkapta a memória-figyelmeztetést, és továbbra is a rendszer erőforrásait fogyasztja, mint korábban.
Ez a néhány állapot és a hozzá kapcsolódó metódusok állnak az egész iOS "multitasking" mögött... remek rendszer, ha a fejlesztők nem hagyják figyelmen kívül, hogy felelősséget kell vállalniuk azért, hogy az alkalmazások mit dobnak fel a felhasználók eszközeire, ha minimalizálják őket vagy figyelmeztetéseket kaphat a rendszertől és így tovább…
Remélem, ez a rövid leírás segít megérteni, hogy az alkalmazás miként játszik szerepet abban, hogy minden zökkenőmentesen működjön. Így szinte kijelenthető, hogy a felhasználó helytelen használatának hibájáról van szó, ami felfogható úgy, hogy - ha nagy mennyiségben használsz többnyire ingyenes amatőr fejlesztőktől származó alkalmazásokat, akkor az iOS készüléked rosszabbul fog futni, mintha nagyot használnál. számos ingyenes és fizetős alkalmazás tapasztalt vagy professzionális fejlesztőktől. Ez nem jelenti azt, hogy nincs kivétel mindkét körben. A foursquare például elég furcsán és igényesen viselkedik, ugyanakkor már az is várható, hogy nagyon ügyes fejlesztőkről van szó, akik sok időt szánnak a memória- és akkumulátorkezelésre, de ennek az ellenkezője igaz. A 4SQ legnagyobb problémája a szerverekkel való kommunikáció, amely gyakran lefagy és túlterhelt. Ez csak egy példa arra, hogy még az ismert alkalmazásoknál is vannak problémák, ami nem változtat azon a tényen, hogy a 4SQ remek szolgáltatás.
Jó szórakozást Alma!! :)
Az információkat a szerző szíves engedélyével adtuk hozzá a cikkhez ;-)
Bocsánat, az ENTER mindenhol ott volt a bekezdések között, itt tehetnének valamit, hogy a megjegyzésekben legyen legalább egy kis RÉGSZÖVEG FORMÁZÁS.
ArnieX: köszönöm a hozzászólást!!
Faramirnak: Csak a problémáddal kapcsolatban, nem tudom, hogy segít-e az esetedben, de saját tapasztalatomból tudom, hogy ha bezárod az alkalmazást (multitaskingban), akkor néhány másodpercbe telik, amíg bezárul, tehát ha ha kikapcsolod, azt javaslom, hogy várj néhány másodpercet (én várok kb. 10 másodpercet, hogy biztos legyek), amíg biztosan befejeződik, és csak ezután indítsam újra.
Szívesen ;) Szívesen segítek, ha lesz rá lehetőségem.
Hogy kell a Meeb-el, ha azon keresztül belépek az ICQ-ba vagy FB chatbe, akkor 10 perc után automatikusan kijelentkezik és offline leszek vagy működik tovább? köszi a felvilágosítást :P
Tíz perc elteltével az alkalmazás internetkapcsolata egyszerűen megszakad. Azonban továbbra is online leszel a Meeba szerveren, és push értesítést kapsz, ha valaki ír neked. Az alkalmazás újbóli megnyitása után a kapcsolat pillanatok alatt létrejön, és boldogan folytathatja a csevegést.
Tehát, ha jól értettem az általad linkelt cikket, akkor a statisztikák csak az alkalmazás összeomlására vonatkoznak, amikor azok elindulnak, ami az esetek meglehetősen kis százaléka, amikor összeomlik. Ezért ebből a "kutatásból" lehetetlen arra a következtetésre jutni, hogy az iOS véleményem szerint kevésbé stabil. Továbbá a Forbes-ból átvett cikk fordítója elfelejtette megemlíteni, hogy az alkalmazások összeomlásáról adatokat szolgáltató céget többek között a Google is támogatja ("Crittercism, amely mögött a Google Ventures áll,...").