Hali ham ko'p odamlar iOS-da multitasking qanday ishlashini bilmaydilar. Biroq, boshlash uchun shuni ta'kidlash kerakki, bu haqiqiy ko'p vazifa emas, balki tizimga yoki foydalanuvchiga yuk bo'lmaydigan juda aqlli yechim.
Ko'pincha iOS-da fonda ishlaydigan ilovalar operatsion xotirani to'ldiradi, bu tizimning sekinlashishiga va batareyaning ishlash muddatiga olib keladi, shuning uchun foydalanuvchi ularni qo'lda o'chirib qo'yishi kerakligi haqidagi xurofotlarni tez-tez eshitish mumkin. Ko'p vazifa panelida barcha ishlaydigan fon jarayonlari ro'yxati mavjud emas, faqat eng so'nggi ishga tushirilgan ilovalar. Shunday qilib, foydalanuvchi bir nechta holatlardan tashqari fonda ishlaydigan jarayonlar haqida tashvishlanmasligi kerak. "Uy" tugmasini bosganingizda, dastur odatda uyqu rejimiga o'tadi yoki yopiladi, shunda u endi protsessor yoki batareyani yuklamaydi va kerak bo'lsa, kerakli xotirani bo'shatadi.
Demak, sizda oʻnlab jarayonlar ishlayotgan boʻlsa, bu toʻliq koʻp vazifalilik emas.Faqat bitta ilova doimo oldingi planda ishlaydi, agar kerak boʻlsa, toʻxtatiladi yoki butunlay oʻchiriladi. Orqa fonda faqat bir nechta ikkinchi darajali jarayonlar ishlaydi. Shuning uchun siz kamdan-kam hollarda iOS’da ilovalarning ishdan chiqishiga duch kelasiz, masalan, Android foydalanuvchi g'amxo'rlik qilishi kerak bo'lgan ishlaydigan ilovalar bilan to'lib-toshgan. Bir tomondan, bu qurilma bilan ishlashni yoqimsiz qiladi, boshqa tomondan, bu, masalan, sekin ishga tushirish va ilovalar o'rtasida o'tishni keltirib chiqaradi.
Ilovaning ishlash vaqti turi
iOS qurilmangizdagi ilova quyidagi 5 holatdan birida joylashgan:
- Yugurish: ilova ishga tushiriladi va oldingi planda ishlaydi
- Fon: u hali ham ishlayapti, lekin fonda ishlaydi (biz boshqa ilovalardan foydalanishimiz mumkin)
- Toʻxtatilgan: Hali ham RAM ishlatilmoqda, lekin ishlamayapti
- Faol emas: ilova ishlayapti, lekin bilvosita buyruqlar (masalan, dastur ishlayotgan holda qurilmani qulflaganingizda)
- Ishlamaydi: Ilova tugatildi yoki boshlanmadi
Chalkashlik, bezovta qilmaslik uchun dastur fonga o'tganda paydo bo'ladi. Bosh sahifa tugmasini bosganingizda yoki ilovani (iPad) yopish uchun ishorani ishlatganingizda, dastur fonga o'tadi. Aksariyat ilovalar bir necha soniya ichida toʻxtatib qoʻyiladi (Ular iDevice operativ xotirasida saqlanadi, shuning uchun ular tezda ishga tushadi, ular protsessorni unchalik yuklamaydi va shu tariqa batareya quvvatini tejaydi) Agar ilova xotiradan foydalanishda davom etsa, sizda shunday deb oʻylashingiz mumkin. bo'shatish uchun qo'lda o'chirish uchun. Lekin buni qilish shart emas, chunki iOS buni siz uchun qiladi. Agar sizda katta hajmdagi operativ xotira ishlatadigan oʻyin kabi talabchan dastur fonda toʻxtatilgan boʻlsa, iOS kerak boʻlganda uni avtomatik ravishda xotiradan olib tashlaydi va ilova belgisini bosish orqali uni qayta ishga tushirishingiz mumkin.
Ushbu holatlarning hech biri ko'p vazifa panelida aks ettirilmaydi, dastur to'xtatilgan, to'xtatilgan yoki fonda ishlayotganidan qat'i nazar, panel faqat yaqinda ishga tushirilgan ilovalar ro'yxatini ko'rsatadi. Bundan tashqari, hozirda ishlayotgan dastur Multitasking panelida ko'rinmasligini ham sezishingiz mumkin
Fon vazifalari
Odatda, "Uy" tugmasini bosganingizda, dastur fonda ishlaydi va agar siz undan foydalanmasangiz, u besh soniya ichida avtomatik ravishda to'xtatiladi. Shunday qilib, agar siz podkastni yuklab olayotgan bo'lsangiz, masalan, tizim uni ishlaydigan dastur sifatida baholaydi va tugatishni o'n daqiqaga kechiktiradi. O'n daqiqadan so'ng jarayon xotiradan chiqariladi. Muxtasar qilib aytganda, agar uni yakunlash uchun 10 daqiqadan ko'proq vaqt ketmasa, "Uy" tugmasini bosish orqali yuklab olishni to'xtatib qo'yishdan tashvishlanishingiz shart emas.
Fonda noma'lum yugurish
Faol bo'lmagan taqdirda, tizim dasturni besh soniya ichida to'xtatadi va yuklab olingan taqdirda, tugatish o'n daqiqaga kechiktiriladi. Biroq, fonda ishlashni talab qiladigan oz sonli ilovalar mavjud. Quyida iOS 5 da fonda cheksiz ishlashi mumkin boʻlgan baʼzi ilovalar misollari keltirilgan:
- Ovoz chiqaradigan va bir muddat uzilishi kerak bo'lgan ilovalar (telefon qo'ng'irog'i paytida musiqani to'xtatib turish va h.k.),
- Joylashuvingizni kuzatuvchi ilovalar (navigatsiya dasturi),
- VoIP qo'ng'iroqlarini qabul qiluvchi ilovalar, masalan, Skype-dan foydalansangiz, ilova fonda bo'lsa ham qo'ng'iroqni qabul qilishingiz mumkin.
- Avtomatik yuklashlar (masalan, Newsstand).
Barcha ilovalar, agar ular boshqa vazifani bajarmasa (masalan, fonda yuklab olishlar) yopilishi kerak. Biroq, doimiy ravishda fonda ishlaydigan istisnolar mavjud, masalan, mahalliy pochta ilovasi. Agar ular fonda ishlayotgan bo'lsa, ular xotirani, protsessordan foydalanishni oladi yoki batareyaning ishlash muddatini qisqartiradi
Fonda cheksiz muddatga ishlashiga ruxsat berilgan ilovalar ishlayotgan vaqtda musiqa tinglashdan tortib, yangi Podcast epizodlarini yuklab olishgacha bo‘lgan barcha ishlarni bajarishi mumkin.
Yuqorida aytib o'tganimdek, foydalanuvchi hech qachon fonda ishlaydigan ilovalarni yopishi shart emas. Buning yagona istisnosi, fonda ishlayotgan ilovaning ishlamay qolishi yoki uyqudan to'g'ri uyg'onmasligi. Keyin foydalanuvchi ko'p vazifalar panelida ilovalarni qo'lda yopishi mumkin, ammo bu kamdan-kam hollarda bo'ladi.
Shunday qilib, umuman olganda, fon jarayonlarini boshqarishingiz shart emas, chunki tizim ularni o'zi hal qiladi. Shuning uchun iOS yangi va tezkor tizimdir.
Ishlab chiquvchi nuqtai nazaridan
Ilova multitaskingning bir qismi sifatida jami olti xil holat bilan reaksiyaga kirishishi mumkin:
1. applicationWillResignActive
Tarjimada bu holat kelajakda (bir necha millisekundlarda) dastur faol dastur (ya'ni, oldingi planda) sifatida o'chib ketishini bildiradi. Bu, masalan, ilovadan foydalanganda qo'ng'iroqni qabul qilishda sodir bo'ladi, lekin shu bilan birga, bu usul dastur fonga o'tishdan oldin ham ushbu holatni keltirib chiqaradi, shuning uchun siz ushbu o'zgarishlarni hisobga olishingiz kerak. Ushbu usul, masalan, kiruvchi qo'ng'iroq bo'lganda, u amalga oshirayotgan barcha harakatlarni to'xtatib turishi va qo'ng'iroqning oxirigacha kutishi uchun ham mos keladi.
2. applicationDidEnterBackground
Vaziyat ilova fonga o'tganligini bildiradi. Ishlab chiquvchilar bu usuldan fonda ishlashi shart boʻlmagan barcha jarayonlarni toʻxtatib turish va foydalanilmagan maʼlumotlar xotirasini va boshqa jarayonlarni tozalash uchun foydalanishi kerak, masalan, taymerlar muddati tugashi, yuklangan rasmlarni xotiradan zarur boʻlmagan xotiradan tozalash yoki yopish. serverlar bilan ulanishlar, agar ilova fonda ulanishni yakunlashi muhim bo'lmasa. Usul ilovada chaqirilganda, u asosan dasturni to'liq to'xtatib turish uchun ishlatilishi kerak, agar uning bir qismi fonda ishlashi talab qilinmasa.
3. applicationWillEnterForeground
Bu holat birinchi holatga qarama-qarshi bo'lib, bu erda dastur faol holatga o'tadi. Holat shunchaki uyqu ilovasi fonda davom etishini va keyingi bir necha millisekundlarda oldingi planda paydo bo'lishini anglatadi. Dasturchilar ushbu usuldan dastur fonda bo'lgan paytda nofaol bo'lgan jarayonlarni davom ettirish uchun foydalanishlari kerak. Serverlarga ulanish qayta o'rnatilishi, taymerlarni qayta o'rnatish, xotiraga rasmlar va ma'lumotlar yuklanishi va boshqa kerakli jarayonlar foydalanuvchi yuklangan ilovani qayta ko'rishdan oldin davom etishi kerak.
4. applicationDidBecomeActive
Vaziyat, dastur oldingi o'ringa tiklangandan so'ng faollashganini bildiradi. Bu foydalanuvchi interfeysiga qo'shimcha o'zgartirishlar kiritish yoki UI ni asl holatiga qaytarish va hokazolar uchun ishlatilishi mumkin bo'lgan usuldir. Bu aslida foydalanuvchi dasturni displeyda ko'rgan paytda sodir bo'ladi, shuning uchun uni bu va oldingi usulda nima sodir bo'lishini ehtiyotkorlik bilan aniqlang. Ular bir necha millisekundlik farq bilan birin-ketin chaqiriladi.
5. ilova tugaydi
Bu holat dastur chiqishidan bir necha millisekund oldin, ya'ni dastur amalda tugashidan oldin sodir bo'ladi. Ko'p vazifani qo'lda yoki qurilmani o'chirishda. Usul qayta ishlangan ma'lumotlarni saqlash, barcha harakatlarni tugatish va endi kerak bo'lmaydigan ma'lumotlarni o'chirish uchun ishlatilishi kerak.
6. applicationDidReceiveMemoryWarning
Bu eng ko'p muhokama qilinadigan oxirgi holat. Agar kerak bo'lsa, u tizim resurslaridan keraksiz foydalansa, dasturni iOS xotirasidan olib tashlash uchun javobgardir. Men iOS-ning fon ilovalari bilan nima qilishini aniq bilmayman, lekin agar unga boshqa jarayonlarga resurslarni chiqarish uchun ilova kerak bo'lsa, u xotirada mavjud bo'lgan resurslarni chiqarishni taklif qiladi. Shunday qilib, bu usul ilovada chaqiriladi. Ishlab chiquvchilar uni dastur o'zi ajratgan xotiradan voz kechishi, bajarilayotgan hamma narsani saqlab qolishi, keraksiz ma'lumotlarni xotiradan tozalashi va aks holda xotirani etarli darajada bo'shatishi uchun amalga oshirishi kerak. To'g'ri, ko'plab ishlab chiquvchilar, hatto yangi boshlanuvchilar ham bunday narsalarni o'ylamaydilar yoki tushunmaydilar, keyin ularning ilovasi batareyaning ishlash muddatiga tahdid solishi va/yoki hatto fonda ham tizim resurslarini keraksiz iste'mol qilishi mumkin.
Hukm
Ushbu oltita holat va ular bilan bog'liq usullar iOS-dagi barcha "ko'p vazifalar" ning fonidir. Bu ajoyib tizim, chunki ishlab chiquvchilar dastur o'z foydalanuvchilarining qurilmalarida nima paydo bo'lishi, agar ular minimallashtirilsa yoki tizimdan ogohlantirishlar olishi va hokazolar uchun javobgar bo'lish zarurligini e'tiborsiz qoldirmasa.
Manba: macworld.com
Mualliflar: Yakub Pojarek, Martin Dubek (ArnieX)
Sizda ham hal qiladigan muammo bormi? Sizga maslahat kerakmi yoki ehtimol to'g'ri dasturni topasizmi? Bo'limdagi forma orqali biz bilan bog'lanishdan tortinmang Maslahat berish, keyingi safar savolingizga javob beramiz.
Assalomu alaykum, juda zo'r maqola, lekin sizda buning texnik yordami bormi, deb o'ylayman. Kechqurun yotishdan oldin batareyani bir necha marta hal qilganim sababli, Wi-Fi va mobil ma'lumotlar o'chirilgan bo'lsa, Wi-Fi o'chirilgan va faqat 3G boshqa holatdan ko'ra ko'proq vaqt talab qildi.
Afsuski, tajriba shuni ko'rsatadiki, iOS-da ilovalar qo'lda o'chirilishi kerak va tizim endi avvalgidek ishlamaydi.
Men iPhone-ni Windows Phone (Samsung Omnia W uchun 6200,-) bilan almashtirdim va tizim tezligi butunlay boshqacha darajada.
Windows 8 Metro planshetlari chiqqach, iPadni ham almashtiraman deb qo'rqaman...
@007 – ha, agar siz eski iPhone3G-larni yangi WP-lar bilan taqqoslasangiz, ha (kim buni kutgan edi?) WP biroz tezroq bo'ladi. Aks holda, Karluka haqidagi g'iybat sizga mos kelmaydi va hozirgi HWni solishtirish o'rinli edi. Men ham WP7 ni sotib oldim va nihoyat 4s bilan yakunlandim, bu WP7 dan butunlay boshqacha foydalanish darajasini ifodalaydi. Shunday qilib, plitkalar bo'ylab yoqimli va cheksiz aylantiring.
Men Pajaga to'liq qo'shilaman
Men yana bir barrelning qoldiqlaridan hissa qo'shgan bo'lardim - Samsung Galaxy S va iPhone 4 - yosh jihatidan solishtirish mumkinmi? IOS 4 davrida va Androiddan boshqa joyda foydalanish qulayligi va tezligi bo'yicha Apple ilovalar bilan ishlash kontseptsiyasini juda yaxshi hal qildi, ammo Android bilan ham xuddi shunday emas. Oxir-oqibat, men baribir 4S bilan yakunlandim va menda hech qanday shikoyat yo'q, chunki "bu shunchaki ishlaydi" .. va u juda tez ishlaydi!
Nazariya chiroyli... Lekin amalda baribir dasturni barda yopaman ;)
Rahmat, juda qiziqarli, pragmatik, qiziqarli, belanchak va chuqurlikdan mahrum emas. Bugungi yoshlarning ushbu taqiqlangan brendga bo'lgan qiziqishini sezilarli darajada ta'kidlash! Ammo uning uchun ham, ushbu maqola uchun ham rahmat.
Maqola mutlaqo noto'g'ri.
"Uy" tugmasi bosilganda dastur o'chmaydi, xato aytib o'tilganidek, to'xtatib turadi. ya'ni albatta xotiradan o'chirmang va chiqmang. Faqat ishga tushirishni to'xtatib turing, iOS bu ilovaga 0% protsessor vaqtini beradi. U, albatta, maqolada aytilganidek, iDevice xotirasining biron bir joyini "almashtirmaydi". Bu haqiqatan ham dasturni almashtirishdan foydalanish mumkinligi tufayli.
Ilova xotiradan telefonda kattaroq ustuvorlikka ega bo'lgan boshqa ilovalarni ishga tushirish uchun xotira kam bo'lsa (odatda boshqa dastur oldingi planda ishlayotgan bo'lsa) o'chiriladi.
Birinchi holda, siz haqsiz, bu tarjima xatosi edi. Almashtirishga kelsak, biz bu erda emas, balki iOS qurilmasidagi xotira maydoni haqida emas, balki operatsion xotira haqida gapiramiz.
ilova tasviri buyruq bilan qayta ishga tushirilgunga qadar cheklangan vaqt xotirada saqlanadi (qarang: 13,7 GB dan 16 GB: tizim va to'xtatilgan ilovalar uchun 2,3 GB ajratilgan)
Shunday qilib, Navigatsiya, Skype va shunga o'xshash ilovalarni farqlash kerak, bu ilovalar hatto fonda ham faol bo'lib qoladi yoki ma'lum bir funktsiya tugamaydi va davom etadi, masalan, uning joylashuvi yoki joylashuvi haqidagi ma'lumotlarni yuborish. Yoki Vokul kabi pord rejimida tinglang va ko'p vazifa hali ham fonda tinglayapti.
Ushbu ilovalar batareya quvvatini sarflaydi va ularni qo'lda yopish va iOS-ni kutmaslik kerak. boshqalar bilan bu shart emas, faqat dastur ishdan chiqqan taqdirda.
Men maqolaga qo'shila olmayman. Min. 1-avlod iPad (iOS 5.0.1) da ko'p vazifali panelda juda ko'p "ochiq" ilovalar bormi yoki bir nechtasi bor-yo'qligini ko'rish aniq. iOS xotirani tozalashga harakat qiladi, lekin bu etarli emas - RAMning kichik hajmi, ehtimol, uning eng katta zaifligi.
shuning uchun ko'p narsa tizim va foydalaniladigan uskunaga bog'liq, iOS 1 o'rnatilgan iPad 5.0.1da 2-avlod iPad-ga qaraganda yomonroq bo'lishi mantiqan to'g'ri.
Kechirasiz, do'stim, bu IDEAL usulining tavsifi. Afsuski, haqiqat butunlay boshqacha va agar siz Apple mahsulotlaridan hech bo'lmaganda men kabi (ya'ni vaqti-vaqti bilan) foydalansangiz, buni bilib olasiz.
"IOS-da fonda ishlaydigan ilovalar operatsion xotirani to'ldiradi degan xurofotlarni tez-tez eshitishingiz mumkin"
Bu xurofot emas, bu shunchaki haqiqat. Axir, siz maqolada o'zingiz da'vo qilasiz.
"Yuqorida aytib o'tganimdek, foydalanuvchi hech qachon fonda ishlaydigan ilovalarni yopishi shart emas."
SAMSIZLIK. Bu shunchaki bema'nilik, olma tashviqoti, mendan jahli chiqmasin.
“Ammo buni qilish shart emas, chunki iOS buni siz uchun qiladi. Agar sizda katta hajmdagi operativ xotira ishlatadigan o‘yin kabi talabchan dastur fonda to‘xtatilgan bo‘lsa, kerak bo‘lganda iOS uni avtomatik ravishda xotiradan olib tashlaydi va ilova belgisini bosish orqali uni qayta ishga tushirishingiz mumkin.”
To'g'ri emas. Vaziyat biroz boshqacha. Oddiy misol - fonda ishlaydigan talabchan ilovalarim bor, menga o'yinlar kerak. Men brauzerni ishga tushiraman, bir nechta yorliqlarni ochaman -> ko'proq xotira kerak. Nima bo'ladi? Orqa fonda talabchan ilovalarni davom ettiraman, aksincha, BRAUZERNING O'ZI QULADI. Agar talab qilinadigan ilovalarni qo'lda yopsam, brauzer uzoq vaqt muammosiz ishlaydi.
Bu nazariya emas, amaliyot. Apple mahsulotining uzoq muddatli foydalanuvchisi sifatida siz hali ham buni bilmasligingizdan hayronman.
Rahmat, bu juda yaxshi tasvirlangan va yaxshi tushuntirilgan. Siz menga juda ko'p yordam berdingiz ;-) ♥
Shunchaki kirish uchun, men Android-da bo'lgani kabi iOS-ga ham qarshi emasman, lekin bu erda bir nechta g'alati narsalar bor, agar bu erda yozilganidek: "siz kamdan-kam hollarda iOS-da dastur ishdan chiqishiga duch kelasiz", keyin Android-da, ilovalar, ehtimol, yiliga bir marta ishdan chiqadi: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Ha, lekin dasturni qo'lda yopish kerak bo'lgan holatlar juda kam, men uni bir marta ishlatganman? ;-) va Mobilemania-dan taqqoslash testiga havola berish befoyda, men Google to'lagan reklama haqida o'qimoqchi bo'lganimda, men u yerni ko'rib chiqaman ;-) har kim qo'lida istalgan android telefonini olishi mumkin va u toza ishlamaydi, ya'ni Galaxy Nexus bundan mustasno, bu tizim ko'proq yoki kamroq moslashtirilgan. Umuman olganda, Android - bu falokat
@Mek - Men bir necha yillardan beri har kuni Apple mahsulotlarini ishlataman va bu men bilan hech qachon sodir bo'lmagan, shuning uchun sizning nazariyangiz qandaydir tarzda ishlamaydi.
Savol:
@redakce – Siz veb-sayt ustida doimiy ishlanayotganini yoki u bilan nimadir sodir bo'layotganini ko'rishingiz mumkin, lekin men hamma narsa kerakli darajada ishlashi uchun bir hafta kerak emasligini his qilyapman. Va men endi bu erga kelmayman, chunki yangi ko'rinish menga mos kelmaydi. Hech bo'lmaganda iPhone-ning mobil versiyasidan foydalandim, lekin hozir u umuman ishlamayapti - qanday qilib? Ular hozircha izohlardagi postlarga javob bermayapti.
@SteveJSF Afsuski, ishlar har doim ham biz xohlagandek bo'lavermaydi. Javoblarga kelsak, yangi SEO plagini ularni buzdi, hozirda u hal qilinmoqda.
WP-Touch ham ba'zi sabablarga ko'ra bizning xizmatimizni to'xtatdi, shuning uchun biz ushbu plagindan yaxshiroq yechim topishga qaror qildik. Shunday qilib, keyingi yangiliklarni tez orada kutishingiz mumkin :-)
Yaxshi maqola. Amaliyotga kelsak, shuni aytmoqchimanki, men bir nechta narsalarga qo'shilaman va ko'pincha u ko'rsatilgandek ishlaydi, lekin afsuski, hali ham noto'g'ri yozilgan dasturlar mavjud, ular to'g'ri ishlamaydi va keyin shunga o'xshash holatlar mavjud. ba'zi o'quvchilar tomonidan qayd etilgan. Menimcha, Skype juda yaxshi misol, men amaliyotdan bilamanki, u hali ham fonda ishlaydi (va bu yaxshi va shunday bo'lishi kerak), lekin muammo shundaki, bu dastur qurilmaning batareyasini juda ko'p sarflaydi va Men uni endi to'g'ri ko'ra olmayapman. Aksincha, Facebook, Badoo va boshqalar kabi ilovalar. ular ham fonda ishlamoqda, lekin ularning iste'moli deyarli sezilmaydi (hech bo'lmaganda men buni sezmayman). Shunday qilib, xato individual ilovalarda deb o'ylayman. Qaysi birini bilsangiz, faqat o'shalarni qo'lda o'chirib qo'ysangiz kifoya!
Shunday qilib, amaliyot shundan iboratki, Facebook kerak bo'lganda ishlaydi va Skype faqat kerak bo'lganda ishlaydi.
Xo'sh, boshqa tomondan, agar batareyani tejash kerak bo'lsa va iPhone-ni iloji boricha "jonli" saqlashim kerakligini bilsam, men ko'p vazifalarni bajarishda keraksiz hamma narsani o'chirib qo'yaman, lekin asosan bu katta ta'sir ko'rsatmaydi, lekin agar kerak bo'lsa 3G, barcha mobil internet, WiFi, joylashuv xizmatlari , samolyot rejimi, yorug'lik kuchi va boshqalarni cheklayman. Muntazam ravishda, men ko'p vazifalarni bajarishda yuqorida aytib o'tilgan ilovalarni ham o'chirib qo'yaman.
Shuning uchun shaxsan men maqola haqiqat deb o'ylayman, afsuski, ba'zi dasturchilar o'z ilovalari bilan bu narsalarni rad etishadi, chunki ularning ilovalari noto'g'ri va mening fikrimcha, buning faqat ikkita echimi bor 1. Agar ilovadan foydalanmaslik va topish mumkin bo'lsa. iloji bo'lsa muqobil yoki 2. Agar iloji bo'lmasa, masalan, Skype ga qarang, uni hisobotda berilgan dasturchiga yozing va ular bu haqda biror narsa qilishlariga umid qiling.
Ilovalarni qo'lda o'chirib qo'yish befoyda bo'lishi mumkin, lekin baribir buni qilaman. Men ham dastur tizimini o'chirmaslikka harakat qildim, ularni ishga tushirishga ruxsat berdim (yoki ularni fonda uxlab qolsin) va batareyaning ishlash muddati ancha past edi, shuningdek, taxminan uch haftadan so'ng iPad 2-ni qayta ishga tushirish kerak edi, u sekin javob berdi. Shunday qilib, men ilovalarni qo'lda o'chirib qo'yaman, batareya uzoq davom etadi, men yaqinda Rojdestvo kunida qayta ishga tushirdim va u yaxshi ishlayapti.
Aytgancha, men Mac OS X da xuddi shu ishni qilaman, men kerak bo'lmagan dasturni yopman (CMD+Q), bu uning fonda uxlashi va RAMni keraksiz iste'mol qilishidan ko'ra yaxshiroqdir (bu OS X ni qila oladi) bilan juda yaxshi ishlayapman). Menda RAM kam, atigi 8 GB, lekin Windows 7 da 8 Gb, tizim sekin javob bermadi yoki almashdi, OS X da bu juda keng tarqalgan hodisa (men kompyuterni hech qachon o'chirmaganman, men buni Mac bilan ham qilaman, shuning uchun bir oy va undan ko'proq vaqt istisno emas, muammo shundaki, men ba'zan RAMni bo'shatish va "tezlashtirish" uchun ehtiyot chorasi sifatida Mac-ni qayta ishga tushirishim kerak, Windows 7 bu kerak emas).
Ilovani qanday portlatish kerakligi meni ko'proq qiziqtiradi. Menga nima bo'ldi, dastur (ayniqsa Geocachingda) ota-serverdan biror narsani yuklayotgan holatga tushib qoldi va shu holatda qolib ketdi. Uy tugmasi ishladi, qayta ishga tushirilgandan so'ng u muzlatilgan holatga qaytdi (men to'xtagan joyda). Qo'lda chiqish (ko'p ta'mli menyuga, yopish uchun piktogramma va minusni ushlab turing) = dastur yo'qoldi, qayta ishga tushirilgandan so'ng u asl holatida qotib qolgan joyda ochildi. Shunday qilib, men hamma narsani yopdim, telefonni o'chirib qo'ydim, uni yoqdim, HOME ni ikki marta bosdim va mana, ilovalar o'chirishdan oldin yopilishidan oldingi kabi bor edi. Qayta ishga tushirish ham yordam bermadi - issiq bo'lguncha uyda va yuqorida ushlab turing. Ilovani telefondan olib tashlash, uni qayta ishga tushirish va telefonga qayta o'rnatish yordam bergan yagona narsa. Negadir men qabul qilmadim.
Ushbu Multitasking boshqaruvi ishlaydi va bu vaziyatlarni engish ishlab chiquvchilarga bog'liq. Butun vaziyatning batafsil va professional tavsifiga qiziqqanlar uchun men bu erda qandayligini yozaman.
Ilova jami 6 ta shtatga javob berishi mumkin va bu holatlar:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
ilova tugaydi
applicationDidReceiveMemoryWarning
Endi men ushbu holatlarni batafsilroq tasvirlashga harakat qilaman.
applicationWillResignActive – bu holat kelajakda (bir necha millisekundlarda) ilova faol dastur sifatida (ya’ni, oldingi dastur) o‘chib ketishini bildiradi, bu, masalan, ilovadan foydalanganda qo‘ng‘iroqni qabul qilishda sodir bo‘ladi, lekin ayni paytda bu usul shuning uchun bu holat dastur fonga o'tishdan oldin ham ishga tushadi, shuning uchun siz ushbu o'zgarishlarni hisobga olishingiz kerak. Ushbu usul, masalan, kiruvchi qo'ng'iroq bo'lganda, u amalga oshirayotgan barcha harakatlarni to'xtatib turishi va qo'ng'iroqning oxirigacha kutishi uchun ham mos keladi.
applicationDidEnterBackground - bu holat dastur fonga kirganligini ko'rsatadi, ishlab chiquvchilar fonda ishlashi shart bo'lmagan barcha jarayonlarni to'xtatib turish va foydalanilmagan ma'lumotlar xotirasini va boshqa jarayonlarni tozalash uchun ushbu usuldan foydalanishlari kerak, masalan, taymerlar muddati tugagan, xotiraga yuklangan tasvirlar kerak bo'lmaydi yoki agar ilova fonda ulanishni yakunlashi muhim bo'lmasa, serverlar bilan ulanishni to'xtatadi. Asosan, ushbu usul ilovada chaqirilganda, agar uning bir qismi fonda ishlashi talab qilinmasa, dasturni to'liq to'xtatib turish uchun ishlatilishi kerak.
applicationWillEnterForeground – bu holat ilova faol holatga o‘tgandagi birinchi holatga qarama-qarshidir. Ilovaning bu holati shunchaki keyingi bir necha millisekundlarda uxlab yotgan ilova fondan davom etishini va oldingi planda paydo boʻlishini bildiradi (ilova oldingi planga kiradi), bu usul dastur ishlab chiquvchilar tomonidan dastur ishlayotgan vaqtda nofaol boʻlgan jarayonlarni davom ettirish uchun foydalanishi kerak. fonda serverlarga ulanish qayta o'rnatilishi, taymerlar qayta o'rnatilishi, xotiraga tasvirlar va ma'lumotlar yuklanishi va boshqa zarur jarayonlar foydalanuvchi yuklangan ilovani qayta ko'rishidan oldin davom etishi kerak.
applicationDidBecomeActive – bu holat ilovaning oldingi o‘ringa tiklanganidan so‘ng endigina faollashganligini ko‘rsatadi, bu foydalanuvchi interfeysiga qo‘shimcha o‘zgartirishlar kiritish yoki UI ni asl holatiga qaytarish va hokazolar uchun ishlatilishi mumkin bo‘lgan usul. qachon foydalanuvchi allaqachon displeyda ko'rishi mumkin, shuning uchun balansdan bu usulda va oldingi usulda nima sodir bo'layotganini aniqlash kerak. Ular bir necha millisekundlik farq bilan birin-ketin chaqiriladi.
applicationWillTerminate - bu holat dastur tugashidan bir necha millisekund oldin, ya'ni dastur amalda tugashidan oldin sodir bo'ladi. Ko'p vazifani qo'lda yoki qurilmani o'chirishda. Ushbu usul qayta ishlangan ma'lumotlarni saqlash va barcha harakatlarni tugatish va endi kerak bo'lmaydigan ma'lumotlarni o'chirish uchun ishlatilishi kerak.
applicationDidReceiveMemoryWarning - va bu erda juda ko'p muhokama qilinadigan shart, agar kerak bo'lsa, iOS tizim resurslaridan keraksiz foydalansa, dasturni xotiradan olib tashlaydi. Men iOS-ning fon ilovalari bilan nima qilishini aniq bilmayman, lekin agar unga boshqa jarayonlarga resurslarni chiqarish uchun ilova kerak bo'lsa, u o'zida mavjud bo'lgan resurslarni chiqarish uchun xotira ogohlantirishi bilan uni taklif qiladi. Shunday qilib, bu usul ilovada chaqiriladi va ishlab chiquvchilar uni dastur o'zida mavjud bo'lgan xotiradan voz kechishi, qayta ishlanganini saqlashi va keraksiz ma'lumotlarni xotiradan o'chirishi va aks holda xotirani etarli darajada bo'shatishi uchun amalga oshirishi kerak. To'g'ri, ko'plab ishlab chiquvchilar, masalan, yangi boshlanuvchilar, bunday narsalar haqida o'ylamaydilar yoki ularni tushunmaydilar, keyin ularning ilovasi batareyaning ishlash muddatini xavf ostiga qo'yishi va/yoki fonda ham tizim resurslarini keraksiz ravishda iste'mol qilishi mumkin. Agar ilova xotira haqida ogohlantirish olgandan keyin hech narsa qilmasa va tizim resurslarini avvalgidek iste'mol qilishda davom etsa, iOS qanday ishlashini bilmayman.
Ushbu bir nechta holatlar va ular bilan bog'liq usullar iOS-dagi butun "ko'p vazifa" ning orqasida turibdi ... agar ishlab chiquvchilar ilovalar minimallashtirilsa, foydalanuvchilarning qurilmalarida nima paydo bo'lishi uchun javobgar bo'lish zarurligini e'tiborsiz qoldirishmasa, bu ajoyib tizim. yoki tizimdan ogohlantirishlar oling va boshqalar ...
Umid qilamanki, bu qisqacha tavsif sizga ilovaning hamma narsa muammosiz ishlashiga qanday aloqasi borligini tushunishga yordam beradi. Shunday qilib, bu foydalanuvchi tomonidan noto'g'ri foydalanish xatosi deb aytish deyarli mumkin, buni tushunish mumkin - agar siz asosan havaskor ishlab chiquvchilarning bepul ilovalaridan ko'p miqdorda foydalansangiz, iOS qurilmangiz katta hajmdagi dasturni ishlatganingizdan ko'ra yomonroq ishlaydi. tajribali yoki professional ishlab chiquvchilardan bepul va pullik ilovalar soni. Bu ikkala doirada ham istisnolar yo'q degani emas. Masalan, foursquare o'zini juda g'alati va talabchan tutadi va shu bilan birga, ular xotira va batareyani boshqarishga ko'p vaqt ajratadigan juda malakali ishlab chiquvchilar deb kutish mumkin, ammo buning aksi. 4SQ bilan bog'liq eng katta muammo bu serverlar bilan aloqa qilishdir, ular tez-tez osilib turadi va to'lib-toshadi. Bu hatto taniqli ilovalarda ham muammolar mavjudligiga misol bo'lib, bu 4SQ ajoyib xizmat ekanligini o'zgartirmaydi.
Xursand bo'ling olmalar!! :)
Ma'lumotni muallifning ruxsati bilan maqolaga qo'shdik ;-)
Kechirasiz, ENTER paragraflar orasida hamma joyda edi, ular bu yerda bu haqda nimadir qilishlari mumkin edi, shunda izohlarda hech bo'lmaganda RICH MATN FORMATLANISH bo'lishi mumkin.
ArnieX: izoh uchun rahmat!!
O'sha Faramir: Men faqat sizning muammoingiz haqida, bu sizning holatingizda yordam beradimi yoki yo'qligini bilmayman, lekin men o'z tajribamdan bilamanki, agar siz ilovani yopsangiz (ko'p vazifada) u yopilishi uchun bir necha soniya kerak bo'ladi, shuning uchun agar siz uni o'chirib qo'ying Men bir necha soniya kutishni tavsiya qilaman (ishonch hosil qilish uchun taxminan 10 soniya kutaman) u aniq tugaguncha va shundan keyingina uni qaytadan boshlayman.
Xush kelibsiz ;) Agar hissa qo'shish imkonim bo'lsa yordam berishdan xursand bo'laman.
Meeb bilan qanday bo'lishim kerak, men u orqali ICQ yoki FB chatiga kirsam, u 10 daqiqadan so'ng avtomatik ravishda tizimdan chiqadi va men oflayn rejimga o'taman yoki u ishlashda davom etadimi? tushuntirish uchun rahmat: P
O'n daqiqadan so'ng dasturning Internetga ulanishi shunchaki uziladi. Biroq, siz hali ham Meeba serverida onlayn bo'lasiz va agar kimdir sizga yozsa, push-bildirishnoma olasiz. Ilovani qayta ochgandan so'ng, bir zumda ulanish o'rnatiladi va siz xursandchilik bilan suhbatni davom ettirishingiz mumkin.
Shunday qilib, agar siz bog'lagan maqolani to'g'ri tushungan bo'lsam, statistik ma'lumotlar faqat dasturning ishlamay qolishi bilan bog'liq bo'lib, ular ishlamay qolishi mumkin bo'lgan holatlarning juda kichik foizini tashkil qiladi. Shuning uchun, bu "tadqiqot" dan, mening fikrimcha, iOS kamroq barqaror degan xulosaga kelish mumkin emas. Bundan tashqari, Forbes'dan olingan maqolaning tarjimoni ilovalarning ishdan chiqishi to'g'risidagi ma'lumotlarni taqdim etuvchi kompaniya boshqalar qatori Google tomonidan qo'llab-quvvatlanishini ham eslatib o'tishni unutdi ("Crittercism, which is supported by Google Ventures,...").