Hirdetés bezárása

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.

.