ჯერ კიდევ არის ბევრი ადამიანი, ვინც არ იცის, როგორ მუშაობს multitasking iOS-ში. თუმცა, დასაწყისისთვის, აუცილებელია აღვნიშნო, რომ ეს არ არის რეალური მრავალფუნქციური, არამედ ძალიან ჭკვიანი გადაწყვეტა, რომელიც არ ამძიმებს სისტემას ან მომხმარებელს.
ხშირად შეიძლება მოისმინოს ცრურწმენები, რომ iOS-ში გაშვებული აპლიკაციები ავსებენ ოპერაციულ მეხსიერებას, რაც იწვევს სისტემის შენელებას და ბატარეის ხანგრძლივობას, ამიტომ მომხმარებელმა ხელით უნდა გამორთოს ისინი. მრავალფუნქციური ზოლი ფაქტობრივად არ შეიცავს ყველა გაშვებული ფონური პროცესის ჩამონათვალს, არამედ მხოლოდ ახლახან გაშვებულ აპლიკაციებს. ასე რომ, მომხმარებელს არ უნდა ინერვიულოს ფონზე გაშვებული პროცესების გამო, გარდა რამდენიმე შემთხვევისა. სახლის ღილაკზე დაჭერისას, აპლიკაცია ჩვეულებრივ იძინებს ან იხურება, ისე რომ აღარ იტვირთება პროცესორი ან ბატარეა და საჭიროების შემთხვევაში ათავისუფლებს საჭირო მეხსიერებას.
ასე რომ, ეს არ არის სრულფასოვანი მრავალფუნქციური სამუშაოები, როდესაც თქვენ გაქვთ ათობით პროცესი გაშვებული მხოლოდ ერთი აპლიკაცია ყოველთვის მუშაობს წინა პლანზე, რომელიც შეჩერებულია ან მთლიანად გამორთულია საჭიროების შემთხვევაში. მხოლოდ რამდენიმე მეორადი პროცესი მუშაობს ფონზე. ამიტომაც იშვიათად შეხვდებით აპლიკაციის კრახს iOS-ზე, მაგალითად ანდროიდი გადატვირთულია გაშვებული აპლიკაციებით, რომლებზეც მომხმარებელმა უნდა იზრუნოს. ეს, ერთის მხრივ, უსიამოვნო ხდის მოწყობილობასთან მუშაობას, ხოლო მეორეს მხრივ, იწვევს, მაგალითად, ნელი გაშვებას და გადასვლებს აპლიკაციებს შორის.
აპლიკაციის გაშვების ტიპი
აპლიკაცია თქვენს iOS მოწყობილობაზე არის ამ 5 მდგომარეობიდან ერთ-ერთში:
- Სირბილი: აპლიკაცია იწყება და მუშაობს წინა პლანზე
- ფონი: ის ჯერ კიდევ მუშაობს, მაგრამ მუშაობს ფონზე (ჩვენ შეგვიძლია გამოვიყენოთ სხვა აპლიკაციები)
- შეჩერებულია: ჯერ კიდევ იყენებს RAM-ს, მაგრამ არ მუშაობს
- არააქტიური: აპლიკაცია გაშვებულია, მაგრამ არაპირდაპირი ბრძანებები (მაგალითად, როდესაც ჩაკეტავთ მოწყობილობას გაშვებული აპლიკაციით)
- არ მუშაობს: განაცხადი შეწყვეტილია ან არ დაწყებულა
დაბნეულობა ხდება მაშინ, როდესაც აპლიკაცია გადადის ფონზე, რათა ხელი არ შეუშალოს. როდესაც დააჭირეთ ღილაკს Home ან იყენებთ ჟესტს აპლიკაციის დახურვისთვის (iPad), აპლიკაცია გადადის ფონზე. აპლიკაციების უმეტესობა შეჩერებულია წამებში (ისინი ინახება iDevice-ის RAM-ში, რათა მათი სწრაფად გაშვება შესაძლებელი იყოს, არ იტვირთოს პროცესორი და ამით დაზოგოს ბატარეის ხანგრძლივობა) შეიძლება ფიქრობთ, რომ თუ აპი განაგრძობს მეხსიერების გამოყენებას, თქვენ გაქვთ ხელით წაშალეთ ის გასათავისუფლებლად. მაგრამ თქვენ არ გჭირდებათ ამის გაკეთება, რადგან iOS ამას გააკეთებს თქვენთვის. თუ თქვენ გაქვთ მოთხოვნადი აპლიკაცია შეჩერებული ფონზე, როგორიცაა თამაში, რომელიც იყენებს დიდი რაოდენობით RAM-ს, iOS ავტომატურად ამოიღებს მას მეხსიერებიდან საჭიროების შემთხვევაში და შეგიძლიათ გადატვირთოთ აპლიკაციის ხატულაზე შეხებით.
არცერთი ეს მდგომარეობა არ არის ასახული მრავალ დავალების შესრულების ზოლში, ზოლი აჩვენებს მხოლოდ ახლახან გაშვებული აპლიკაციების ჩამონათვალს, მიუხედავად იმისა, არის თუ არა აპლიკაცია შეჩერებული, დაპაუზებული ან გაშვებული ფონზე. თქვენ ასევე შეგიძლიათ შეამჩნიოთ, რომ აპლიკაცია, რომელიც ამჟამად მუშაობს, არ ჩანს Multitasking პანელში
ფონის ამოცანები
ჩვეულებრივ, სახლის ღილაკზე დაჭერისას აპლიკაცია იმუშავებს ფონზე და თუ არ იყენებთ, ის ავტომატურად შეჩერდება ხუთ წამში. ასე რომ, თუ თქვენ ჩამოტვირთავთ პოდკასტს, მაგალითად, სისტემა აფასებს მას, როგორც გაშვებულ აპლიკაციას და აჭიანურებს შეწყვეტას ათი წუთით. არაუგვიანეს ათი წუთის შემდეგ, პროცესი გამოთავისუფლდება მეხსიერებიდან. მოკლედ, თქვენ არ უნდა ინერვიულოთ თქვენი გადმოტვირთვის შეწყვეტის შესახებ Home ღილაკზე დაჭერით, თუ მის დასრულებას 10 წუთზე მეტი დრო არ დასჭირდება.
განუსაზღვრელი გაშვება ფონზე
უმოქმედობის შემთხვევაში სისტემა ხუთ წამში წყვეტს აპლიკაციას, ჩამოტვირთვის შემთხვევაში კი შეწყვეტა ათი წუთით იგვიანებს. თუმცა, არის აპლიკაციების მცირე რაოდენობა, რომლებიც საჭიროებენ მუშაობას ფონზე. აქ მოცემულია აპლიკაციების რამდენიმე მაგალითი, რომლებსაც შეუძლიათ iOS 5-ში განუსაზღვრელი ვადით იმუშაონ ფონზე:
- აპლიკაციები, რომლებიც უკრავს ხმას და გარკვეული ხნით უნდა შეწყდეს (მუსიკის შეჩერება სატელეფონო ზარის დროს და ა.შ.),
- აპლიკაციები, რომლებიც აკონტროლებენ თქვენს მდებარეობას (ნავიგაციის პროგრამა),
- აპლიკაციები, რომლებიც იღებენ VoIP ზარებს, მაგალითად, თუ იყენებთ სკაიპს, შეგიძლიათ მიიღოთ ზარი მაშინაც კი, როდესაც აპლიკაცია ფონზეა,
- ავტომატური ჩამოტვირთვა (მაგ. Newsstand).
ყველა აპლიკაცია უნდა დაიხუროს, თუ ისინი აღარ ასრულებენ დავალებას (როგორიცაა ფონური ჩამოტვირთვები). თუმცა, არის გამონაკლისები, რომლებიც მუდმივად მუშაობს ფონზე, როგორიცაა მშობლიური ფოსტის აპლიკაცია. თუ ისინი მუშაობენ ფონზე, ისინი იკავებენ მეხსიერებას, CPU-ს გამოყენებას ან ამცირებს ბატარეის ხანგრძლივობას
აპებს, რომლებსაც ფონზე განუსაზღვრელი ვადით მუშაობის უფლება აქვთ, შეუძლიათ გააკეთონ ყველაფერი, რასაც აკეთებენ მუშაობის დროს, მუსიკის დაკვრიდან ახალი პოდკასტის ეპიზოდების ჩამოტვირთვით.
როგორც უკვე აღვნიშნე, მომხმარებელს არასოდეს სჭირდება ფონზე გაშვებული აპლიკაციების დახურვა. ერთადერთი გამონაკლისი არის, როდესაც ფონზე გაშვებული აპლიკაცია ავარიულად იშლება ან სათანადოდ არ იღვიძებს ძილისგან. შემდეგ მომხმარებელს შეუძლია აპლიკაციების ხელით დახურვა მრავალამოცანის ზოლში, მაგრამ ეს იშვიათად ხდება.
ასე რომ, ზოგადად, თქვენ არ გჭირდებათ ფონური პროცესების მართვა, რადგან სისტემა თავად იზრუნებს მათზე. ამიტომ iOS არის ასეთი ახალი და სწრაფი სისტემა.
დეველოპერის გადმოსახედიდან
აპლიკაციას შეუძლია რეაგირება მოახდინოს სულ ექვს განსხვავებულ მდგომარეობაზე, როგორც მულტიტასკინგის ნაწილი:
1. applicationWillResignActive
თარგმანში, ეს მდგომარეობა ნიშნავს, რომ აპლიკაცია მომავალში (რამდენიმე მილიწამში) დატოვებს აქტიურ აპლიკაციას (ანუ აპლიკაცია წინა პლანზე). ეს ხდება, მაგალითად, აპლიკაციის გამოყენებისას ზარის მიღებისას, მაგრამ ამავდროულად, ეს მეთოდი ასევე იწვევს ამ მდგომარეობას აპლიკაციის ფონზე გადასვლამდე, ამიტომ თქვენ უნდა გაითვალისწინოთ ეს ცვლილებები. ეს მეთოდი ასევე შესაფერისია იმისთვის, რომ, მაგალითად, შეაჩეროს ყველა აქტივობა, რომელსაც ასრულებს შემომავალი ზარი და ელოდება ზარის დასრულებას.
2. applicationDidEnterBackground
სტატუსი მიუთითებს, რომ აპლიკაცია გადავიდა ფონზე. დეველოპერებმა უნდა გამოიყენონ ეს მეთოდი, რათა შეაჩერონ ყველა პროცესი, რომელიც სულაც არ საჭიროებს ფონზე გაშვებას და მეხსიერების გასუფთავებას გამოუყენებელი მონაცემებისა და სხვა პროცესებისგან, როგორიცაა ქრონომეტრაჟის ვადის გასვლა, დატვირთული სურათების გასუფთავება მეხსიერებიდან, რომლებიც სულაც არ არის საჭირო, ან დახურვა. კავშირები სერვერებთან, გარდა იმ შემთხვევისა, როდესაც აპლიკაციისთვის კრიტიკული არ არის კავშირების დასრულება ფონზე. როდესაც მეთოდი გამოიძახება აპლიკაციაში, ის ძირითადად უნდა იქნას გამოყენებული აპლიკაციის სრულად შესაჩერებლად, თუ მისი ზოგიერთი ნაწილი არ არის საჭირო ფონზე გაშვება.
3. applicationWillEnterForeground
ეს მდგომარეობა არის პირველი მდგომარეობის საპირისპირო, სადაც განაცხადი გადადის აქტიურ მდგომარეობაზე. მდგომარეობა უბრალოდ ნიშნავს, რომ საძილე აპლიკაცია განახლდება ფონიდან და გამოჩნდება წინა პლანზე მომდევნო რამდენიმე მილიწამში. დეველოპერებმა უნდა გამოიყენონ ეს მეთოდი, რათა განაახლონ ნებისმიერი პროცესი, რომელიც არააქტიური იყო, სანამ აპლიკაცია ფონზე იყო. სერვერებთან კავშირი უნდა აღდგეს, ტაიმერების გადატვირთვა, სურათები და მონაცემები ჩაიტვირთება მეხსიერებაში და სხვა საჭირო პროცესები შეიძლება განახლდეს მანამ, სანამ მომხმარებელი კვლავ იხილავს დატვირთულ აპლიკაციას.
4. applicationDidBecomeActive
სახელმწიფო მიუთითებს, რომ აპლიკაცია ახლახან გააქტიურდა წინა პლანზე აღდგენის შემდეგ. ეს არის მეთოდი, რომელიც შეიძლება გამოყენებულ იქნას მომხმარებლის ინტერფეისის დამატებითი კორექტირებისთვის ან ინტერფეისის პირვანდელ მდგომარეობაში აღსადგენად და ა.შ. ეს რეალურად ხდება იმ მომენტში, როდესაც მომხმარებელი უკვე ხედავს აპლიკაციას ეკრანზე, ამიტომ აუცილებელია განისაზღვროს ყურადღება მიაქციეთ რა ხდება ამ და წინა მეთოდში. მათ ერთმანეთის მიყოლებით ეძახიან რამდენიმე მილიწამის სხვაობით.
5. განაცხადი შეწყდება
ეს მდგომარეობა ხდება აპლიკაციის გასვლამდე რამდენიმე მილიწამით ადრე, ანუ განაცხადის რეალურად დასრულებამდე. ან ხელით მრავალსამუშაოდან ან მოწყობილობის გამორთვისას. მეთოდი უნდა იქნას გამოყენებული დამუშავებული მონაცემების შესანახად, ყველა აქტივობის დასასრულებლად და მონაცემების წასაშლელად, რომლებიც აღარ იქნება საჭირო.
6. applicationDidReceiveMemoryWarning
ეს არის ბოლო მდგომარეობა, რომელიც ყველაზე მეტად განიხილება. ის პასუხისმგებელია, საჭიროების შემთხვევაში, ამოიღოს აპლიკაცია iOS მეხსიერებიდან, თუ ის იყენებს სისტემის რესურსებს ზედმეტად. მე არ ვიცი კონკრეტულად რას აკეთებს iOS ფონურ აპებთან, მაგრამ თუ მას სჭირდება აპი სხვა პროცესებისთვის რესურსების გასათავისუფლებლად, ის მეხსიერების გაფრთხილებით აიძულებს გაათავისუფლოს ნებისმიერი რესურსი. ასე რომ, ეს მეთოდი ეწოდება აპლიკაციაში. დეველოპერებმა უნდა განახორციელონ ის ისე, რომ აპლიკაციამ უარი თქვას გამოყოფილ მეხსიერებაზე, შეინახოს ყველაფერი მიმდინარე პროცესში, გაასუფთავოს არასაჭირო მონაცემები მეხსიერებიდან და სხვაგვარად ადეკვატურად გაათავისუფლოს მეხსიერება. მართალია, ბევრი დეველოპერი, თუნდაც დამწყები, არ ფიქრობს და არ ესმის ასეთ საკითხებზე და შემდეგ შეიძლება მოხდეს, რომ მათი აპლიკაცია საფრთხეს უქმნის ბატარეის ხანგრძლივობას და/ან მოიხმარს სისტემის რესურსებს ზედმეტად, თუნდაც ფონზე.
ვერდიქტი
ეს ექვსი მდგომარეობა და მათთან დაკავშირებული მეთოდები არის iOS-ის ყველა "მრავალვაზნის" ფონზე. ეს შესანიშნავი სისტემაა, სანამ დეველოპერები არ იგნორირებას უკეთებენ იმ ფაქტს, რომ საჭიროა პასუხისმგებლობა იმაზე, თუ რას აყენებს აპლიკაცია მათი მომხმარებლების მოწყობილობებზე, თუ ისინი მინიმუმამდეა დაყვანილი ან მიიღებენ გაფრთხილებებს სისტემისგან და ა.შ.
წყარო: macworld.com
ავტორები: იაკუბ პოჟარეკი, მარტინ დუბეკი (ArnieX)
თქვენც გაქვთ გადასაჭრელი პრობლემა? გჭირდებათ რჩევა ან იქნებ იპოვოთ სწორი აპლიკაცია? ნუ მოგერიდებათ დაგვიკავშირდეთ განყოფილებაში მოცემული ფორმის საშუალებით კონსულტაცია, შემდეგ ჯერზე ჩვენ ვუპასუხებთ თქვენს კითხვას.
გამარჯობა, მართლა მაგარი სტატიაა, მაგრამ მაინტერესებს, გაქვთ თუ არა რაიმე ტექნიკური მხარდაჭერა ამისთვის. იმიტომ რომ ბატარეა საღამოს ძილის წინ რამდენჯერმე მოვაგვარე და ისე მოხდა, რომ wifi და მობილური დატეტის გამორთვა უფრო მეტი დამჭირდა ვიდრე სხვა შემთხვევაში გამორთული wifi და მხოლოდ 3G.
სამწუხაროდ, გამოცდილება ისეთია, რომ iOS-ში აპლიკაციები ხელით უნდა გამორთოთ და სისტემა აღარ მუშაობს ისე, როგორც ადრე.
ჩემი iPhone შევცვალე Windows Phone-ით (Samsung Omnia W 6200,-) და სისტემის სიჩქარე სულ სხვა დონეზეა.
მეშინია ვინდოუს 8 მეტრო ტაბლეტები რომ გამოვა, აიპადსაც გამოვცვლი...
@007 – დიახ, თუ ძველ iPhone3G-ებს ადარებთ ახალ WP-ებს, მაშინ დიახ (ვინ მოელოდა ამას?) WP იქნება საკმაოდ სწრაფი. თორემ კარლულკაზე ჭორაობა არ გიხდებათ და მიზანშეწონილი იყო ამჟამინდელი HW-ის შედარება. მე ასევე ვიყიდე WP7 და საბოლოოდ დავამთავრე 4s, რომელიც წარმოადგენს გამოყენების სრულიად განსხვავებულ დონეს, ვიდრე WP7. ასე რომ გაიარეთ სასიამოვნოდ და დაუსრულებლად გადაახვიეთ ფილებში.
სრულიად ვეთანხმები პაჟას
კიდევ ერთი ლულის ნამსხვრევებიდან - Samsung Galaxy S-ისა და iPhone 4-ის - მე ვიტყოდი, რომ ასაკის მიხედვით შესადარებელია? iOS 4-ის დროს და გამოყენებისა და სიჩქარის კუთხით Android-ის გარდა სხვაგან, Apple-მა აპლიკაციებთან მუშაობის კონცეფცია ძალიან კარგად გადაჭრა, მაგრამ იგივე აღარ არის ანდროიდზე. ბოლოს მაინც 4S-ით დავამთავრე და პრეტენზია არ მაქვს, რადგან "უბრალოდ მუშაობს" .. და ძალიან სწრაფად მუშაობს!
თეორია მშვენიერია... მაგრამ პრაქტიკაში მე მაინც ვხურავ აპლიკაციას ბარში ;)
მადლობა, ძალიან საინტერესო, პრაგმატული, საინტერესო, რხევა და სიღრმე არ აკლია. მნიშვნელოვნად ხაზს უსვამს დღევანდელი ახალგაზრდების გატაცებას ამ აკრძალული ბრენდით! მაგრამ მადლობა მას, ისევე როგორც ამ სტატიისთვის.
სტატია სრულიად არასწორია.
აპლიკაცია არ ითიშება სახლის ღილაკზე დაჭერისას, როგორც შეცდომით არის ნათქვამი, მაგრამ ჩერდება. ე.ი. აუცილებლად არ წაშალო მეხსიერებიდან და არ დატოვო. უბრალოდ შეაჩერე გაშვება, iOS ამ აპს მისცემს 0% CPU დროს. ის ნამდვილად არ "ცვლის" არსად iDevice მეხსიერებაში, როგორც ეს სტატიაშია ნათქვამი. ეს მართლაც იმის დამსახურებაა, რომ შესაძლებელია აპლიკაციის გადართვის გამოყენება.
აპლიკაცია ამოღებულია მეხსიერებიდან, როდესაც ტელეფონს აქვს მცირე მეხსიერება სხვა უფრო მაღალი პრიორიტეტის მქონე აპლიკაციების გასაშვებად (როგორც წესი, სხვა აპლიკაცია მუშაობს წინა პლანზე).
პირველ შემთხვევაში მართალი ხარ, თარგმანის შეცდომა იყო. რაც შეეხება გაცვლას, აქ ამაზე არ არის საუბარი, ჩვენ ვსაუბრობთ ოპერაციულ მეხსიერებაზე და არა iOS მოწყობილობაში შესანახ სივრცეზე.
აპლიკაციის სურათი ინახება მეხსიერებაში შეზღუდული დროით, სანამ არ გამოიძახება ხელახლა ბრძანებით (იხ. 13,7 გბ 16 გბ-დან: 2,3 გბ რეზერვირებულია სისტემისა და აპლიკაციის შეჩერებისთვის)
ამრიგად, აუცილებელია განასხვავოთ ისეთი აპლიკაციები, როგორიცაა ნავიგაცია, სკაიპი და მსგავსი, ეს აპლიკაციები აქტიური რჩება ფონზეც კი, ან გარკვეული ფუნქცია არ მთავრდება და აგრძელებს, მაგალითად, მონაცემების გაგზავნას მისი მდებარეობის ან მდებარეობის შესახებ ინფორმაციის შესახებ. ან Vokul-ის მსგავსად pord რეჟიმში მოსმენა და მულტიტასკინგი კვლავ ფონზე უსმენს.
ეს აპლიკაციები აცლიან ბატარეას და აუცილებელია მათი ხელით დახურვა და არ დაელოდოთ iOS-ს. სხვებთან ერთად ეს არ არის საჭირო, იქ მხოლოდ იმ შემთხვევაში, თუ აპლიკაცია დაიშლება.
სტატიას ვერ დავეთანხმები. მინ. 1-ლი თაობის iPad-ზე (iOS 5.0.1) გასაგებია, მაქვს თუ არა ბევრი „ღია“ აპლიკაცია მრავალსამუშაო ზოლში, თუ მხოლოდ რამდენიმე. iOS ნამდვილად ცდილობს მეხსიერების გაწმენდას, მაგრამ ეს აშკარად არ არის საკმარისი - RAM-ის მცირე ზომა ალბათ მისი ყველაზე დიდი სისუსტეა.
ასე რომ, ბევრი რამ არის დამოკიდებული სისტემაზე და გამოყენებულ აპარატურაზე, სავსებით ლოგიკურია, რომ ეს იქნება უარესი iPad 1-ზე iOS 5.0.1-ით, ვიდრე მე-2 თაობის iPad-ზე.
ბოდიშს გიხდით მეგობარო, ეს არის იმ იდეალის აღწერა, თუ როგორ უნდა იმუშაოს. სამწუხაროდ, რეალობა სრულიად განსხვავებულია და თქვენ ამას გეცოდინებათ, თუ იყენებდით Apple-ის პროდუქტებს, ყოველ შემთხვევაში ისე, როგორც მე (ე.ი. ხანდახან).
„ხშირად შეიძლება მოისმინოთ ცრურწმენები, რომ iOS-ის ფონზე გაშვებული აპები ავსებენ ოპერაციულ მეხსიერებას.
ეს არ არის ცრურწმენა, უბრალოდ ფაქტია. ყოველივე ამის შემდეგ, თქვენ თავად აცხადებთ ამას სტატიაში.
"როგორც უკვე აღვნიშნე, მომხმარებელს არასოდეს სჭირდება ფონზე გაშვებული აპლიკაციების დახურვა."
ᲣᲐᲖᲠᲝᲑᲐ. ეს მხოლოდ სისულელეა, ვაშლის პროპაგანდა, არ გაბრაზდე ჩემზე.
”მაგრამ თქვენ არ გჭირდებათ ამის გაკეთება, რადგან iOS ამას გააკეთებს თქვენთვის. თუ თქვენ გაქვთ მომთხოვნი აპლიკაცია შეჩერებული ფონზე, როგორიცაა თამაში, რომელიც იყენებს დიდი რაოდენობით RAM-ს, iOS ავტომატურად ამოიღებს მას მეხსიერებიდან საჭიროების შემთხვევაში და შეგიძლიათ გადატვირთოთ აპლიკაციის ხატულაზე შეხებით.
Სიმართლეს არ შეესაბამება. სიტუაცია ცოტა განსხვავებულია. ტიპიური მაგალითი - მაქვს მომთხოვნი აპლიკაციები გაშვებული ფონზე, მჭირდება თამაშები. მე გავხსნი ბრაუზერს, ვხსნი რამდენიმე ჩანართს -> მჭირდება მეტი მეხსიერება. Რა მოხდება? რთული აპლიკაციები რჩება ფონზე, პირიქით, თავად ბრაუზერი ეცემა. თუ მომთხოვნი აპლიკაციები ხელით დავხურე, ბრაუზერი დიდხანს მუშაობს უპრობლემოდ.
ეს პრაქტიკაა და არა თეორია. და მიკვირს, რომ, როგორც Apple-ის პროდუქტის გრძელვადიანი მომხმარებელი, თქვენ ჯერ კიდევ არ იცით ეს.
მადლობა, ეს ძალიან კარგად არის აღწერილი და კარგად ახსნილი. შენ საკმაოდ დამეხმარე ;-) ♥
დასაწყისისთვის, მე არც მომხრე ვარ და არც წინააღმდეგი, როგორც ანდროიდის შემთხვევაში, მაგრამ აქ არის რამდენიმე უცნაური რამ, თუ აქ წერია: "იშვიათად შეგხვდებათ აპლიკაციის კრახი iOS-ით", შემდეგ ანდროიდის აპლიკაციების კრახი. დაახლოებით წელიწადში ერთხელ: -პ
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
დიახ, მაგრამ შემთხვევები, როდესაც აპლიკაციის ხელით დახურვა გჭირდებათ, ნამდვილად მინიმალურია, დაახლოებით ერთხელ გამოვიყენე? ;-) და მობაილმანიიდან შედარებითი ტესტის ლინკის მიცემა სრულიად უაზროა, როცა მინდა წავიკითხო გუგლის გადახდილი რეკლამა, იქ გადავხედავ ;-) ყველას შეუძლია ხელში ჩაიგდოს ნებისმიერი ანდროიდი და ის არ იმუშავებს სუფთად, ანუ Galaxy Nexus-ის გარდა, რომელიც სისტემა მეტ-ნაკლებად მორგებულია. მთლიანობაში, ანდროიდი კატასტროფაა
@Mek – მე რამდენიმე წელია ყოველდღიურად ვიყენებ Apple-ის პროდუქტებს და ეს არასდროს შემემთხვა, ასე რომ თქვენი თეორია რატომღაც არ მუშაობს.
WEED:
@redakce – ხედავთ, რომ ვებსაიტზე მუდმივად მუშაობს ან რაღაც ხდება, მაგრამ ისეთი განცდა მაქვს, რომ ერთი კვირა არ სჭირდება, რომ ყველაფერი ისე მუშაობდეს, როგორც უნდა. და აქ ნამდვილად აღარ მოვდივარ, რადგან ახალი სახე არ მაწყობს. აიფონზე მაინც მობილური ვერსია გამოვიყენე, ახლა საერთოდ არ მუშაობს - როგორ? ისინი ამჟამად არ პასუხობენ კომენტარებში გამოქვეყნებულ პოსტებს.
@SteveJSF სამწუხაროდ, ყველაფერი ყოველთვის ისე არ ხდება, როგორც ჩვენ გვინდა. რაც შეეხება პასუხებს, SEO-ს ახალმა მოდულმა დაარღვია ისინი, ამჟამად ის მოგვარებულია.
WP-Touch-მაც შეწყვიტა ჩვენი სერვისი რატომღაც, ამიტომ გადავწყვიტეთ ამ დანამატზე უკეთესი გადაწყვეტის მოფიქრება. ასე რომ თქვენ შეგიძლიათ ელოდოთ შემდეგ სიახლეებს მალე :-)
სასიამოვნო სტატია. რაც შეეხება პრაქტიკას, მინდა ვთქვა, რომ ბევრ რამეს ვეთანხმები და უმეტესად მუშაობს ისე, როგორც წერია, მაგრამ სამწუხაროდ ჯერ კიდევ არის ცუდად დაწერილი აპლიკაციები, რომლებიც არ იქცევიან სწორად და არის მსგავსი შემთხვევები. აღნიშნა ზოგიერთმა მკითხველმა. ვფიქრობ, რომ სკაიპი ძალიან კარგი მაგალითია, პრაქტიკიდან ვიცი, რომ ის ჯერ კიდევ მუშაობს ფონზე (და ეს კარგია და ასეც უნდა იყოს), მაგრამ პრობლემა ის არის, რომ ეს აპლიკაცია ბევრს აცლის მოწყობილობის ბატარეას და ვეღარ ვხედავ სწორად. პირიქით, აპლიკაციები, როგორიცაა Facebook, Badoo და ა.შ. ისინი ასევე ისევ ფონზე მუშაობენ, მაგრამ მათი მოხმარება თითქმის შეუმჩნეველია (ყოველ შემთხვევაში მე ვერ ვამჩნევ). ასე რომ, ვფიქრობ, შეცდომა არის ცალკეულ აპლიკაციებში. რომ იცოდეთ რომელი, საკმარისი იქნებოდა ხელით გამორთოთ მხოლოდ ისინი!
ასე რომ, პრაქტიკა არის ის, რომ Facebook მუშაობს საჭიროებისამებრ და Skype მხოლოდ საჭიროების შემთხვევაში.
მეორე მხრივ, თუ ბატარეის დაზოგვა მჭირდება და ვიცი, რომ აიფონი "ცოცხალი" უნდა შევინარჩუნო რაც შეიძლება დიდხანს, ასევე ვთიშავ ყველაფერს, რაც არასაჭიროა მულტიტასკინგში, მაგრამ ძირითადად ამას დიდი გავლენა არ აქვს. მაგრამ საჭიროების შემთხვევაში ვზღუდავ 3G-ს, ყველა მობილურ ინტერნეტს, WiFi-ს, მდებარეობის სერვისებს, თვითმფრინავის რეჟიმს, განათების სიძლიერეს და ა.შ. რუტინის ფარგლებში, ასევე ვთიშავ ზემოხსენებულ აპლიკაციებს მრავალ დავალებაში.
ასე რომ, პირადად მე ვფიქრობ, რომ სტატია მართალია, სამწუხაროდ ზოგიერთი პროგრამისტი უარყოფს ამ საკითხებს თავისი აპლიკაციებით, რადგან მათი აპლიკაციები არასწორია და ჩემი აზრით, ამისთვის მხოლოდ ორი გამოსავალია 1. თუ შესაძლებელია, არ გამოიყენოთ აპლიკაცია და იპოვოთ ალტერნატივა თუ შესაძლებელია, ან 2. თუ ეს შეუძლებელია, იხილეთ მაგ.
შეიძლება უაზრო იყოს აპების ხელით გამორთვა, მაგრამ მე ამას მაინც ვაკეთებ. ასევე ვცდილობდი აპლიკაციის სისტემა არ გამომერთო, გაშვებულიყო (ან ფონზე მძინარე დამეტოვებინა) და ბატარეის ხანგრძლივობა გაცილებით დაბალი იყო, ასევე საჭირო იყო iPad 2-ის გადატვირთვა დაახლოებით სამი კვირის შემდეგ, ის ნელა პასუხობდა. ამიტომ აპებს ხელით ვთიშავ, ბატარეა უფრო მეტხანს ძლებს, ახლახან გადავტვირთე შობის დღეს და კარგად მუშაობს.
სხვათა შორის, იგივეს ვაკეთებ Mac OS X-ში, უბრალოდ ვხურავ აპლიკაციას, რომელიც არ მჭირდება (CMD+Q), ჯობია, ფონზე დაიძინოს და ზედმეტად ჭამოს ოპერატიული მეხსიერება (რაც OS X-ს შეუძლია. ძალიან კარგად არ მუშაობს). მე მაქვს პატარა ოპერატიული მეხსიერება, მხოლოდ 8 GB, მაგრამ Windows 7-ში 8 GB სისტემა არ რეაგირებდა ნელა და არ ცვლიდა, OS X-ში ეს საკმაოდ გავრცელებული ფენომენია (კომპიუტერი არასდროს გამოვრთე, ამას Mac-ითაც ვაკეთებ. ასე რომ, ერთი თვე და მეტი დრო არ არის გამონაკლისი, პრობლემა ის არის, რომ ზოგჯერ სიფრთხილის მიზნით მიწევს Mac-ის გადატვირთვა, რომ გავათავისუფლო RAM და "დააჩქაროს", Windows 7-ს ეს არ სჭირდება).
მე უფრო მაინტერესებს, როგორ გავაფუჭო აპლიკაცია. რაც დამემართა ის იყო, რომ აპლიკაცია (კონკრეტულად Geocaching-ზე) შევიდა ისეთ მდგომარეობაში, რომ რაღაცას იტვირთებოდა მშობელი სერვერიდან და გაჩერდა ამ მდგომარეობაში. მთავარი ღილაკი მუშაობდა, გადატვირთვის შემდეგ ის დაბრუნდა გაყინულ მდგომარეობაში (სადაც მე გავჩერდი). ხელით გასვლა (მულტიტესტირების მენიუში, დაიხურეთ ხატულა და მინუსი) = აპლიკაცია გაქრა, გადატვირთვის შემდეგ გაიხსნა თავდაპირველ მდგომარეობაში, სადაც გაიყინა. ამიტომ დავხურე ყველაფერი, გამოვრთე ტელეფონი, ჩავრთე, ორჯერ დავაწკაპუნე HOME-ზე და აჰა - აპლიკაციები იქ იყო, როგორც დახურვამდე, გათიშვის წინ. არც გადატვირთვამ უშველა - გააჩერეთ სახლში და ზევით, სანამ არ გაცხელდება. ერთადერთი რაც დაეხმარა იყო აპლიკაციის ტელეფონიდან ამოღება, მისი გადატვირთვა და ტელეფონზე ხელახლა ინსტალაცია. რატომღაც არ ავიღე.
Multitasking მენეჯმენტი მუშაობს და ამ სიტუაციებთან გამკლავება დეველოპერების გადასაწყვეტია. ვისაც აინტერესებს მთელი სიტუაციის უფრო დეტალური და პროფესიონალური აღწერა, აქ დავწერ როგორ არის.
აპლიკაციას შეუძლია უპასუხოს სულ 6 შტატს და ეს მდგომარეობებია:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
განაცხადი შეწყდება
applicationDidReceiveMemoryWarning
ახლა შევეცდები უფრო დეტალურად აღვწერო ეს სახელმწიფოები.
applicationWillResignActive – ეს სტატუსი ნიშნავს, რომ მომავალში (რამდენიმე მილიწამში) აპლიკაცია გადადგება როგორც აქტიური აპლიკაცია (ანუ აპლიკაცია წინა პლანზე) ეს ხდება მაგალითად აპლიკაციის გამოყენებისას ზარის მიღებისას, მაგრამ ამავე დროს. ეს მეთოდი ამოქმედდება მანამ, სანამ აპლიკაცია ფონზე გადავა, ასე რომ თქვენ უნდა გაითვალისწინოთ ეს ცვლილებები. ეს მეთოდი ასევე შესაფერისია იმისთვის, რომ, მაგალითად, შეაჩეროს ყველა აქტივობა, რომელსაც ასრულებს შემომავალი ზარი და ელოდება ზარის დასრულებას.
applicationDidEnterBackground - ეს სტატუსი მიუთითებს, რომ აპლიკაცია შევიდა ფონზე, დეველოპერებმა უნდა გამოიყენონ ეს მეთოდი, რათა შეაჩერონ ყველა პროცესი, რომელიც სულაც არ არის საჭირო ფონზე გაშვება და მეხსიერების გაწმენდა გამოუყენებელი მონაცემებისა და სხვა პროცესებისგან, მაგალითად, ვადის გასვლის ქრონომეტრები მეხსიერებით დატვირთული სურათები, რომლებიც სულაც არ იქნება საჭირო ან შეწყვეტს კავშირს სერვერებთან, თუ აპლიკაციისთვის არ არის გადამწყვეტი მნიშვნელობა ფონზე კავშირის დასრულება. ძირითადად, აპლიკაციაში გამოძახებისას ეს მეთოდი უნდა იქნას გამოყენებული აპლიკაციის სრულად შესაჩერებლად, თუ მისი ზოგიერთი ნაწილი არ არის საჭირო ფონზე გასაშვებად.
applicationWillEnterForeground – ეს მდგომარეობა საპირისპიროა პირველი მდგომარეობისა, როდესაც აპლიკაცია გადადის აქტიურ მდგომარეობაში. აპლიკაციის ეს მდგომარეობა უბრალოდ ნიშნავს, რომ მომდევნო რამდენიმე მილიწამში საძილე აპლიკაცია განახლდება ფონიდან და გამოჩნდება წინა პლანზე (აპლიკაცია შემოდის წინა პლანზე), ეს მეთოდი უნდა გამოიყენონ დეველოპერებმა, რათა განაახლონ ნებისმიერი პროცესი, რომელიც არააქტიური იყო აპლიკაციის მუშაობის დროს. ფონზე, სერვერებთან კავშირები უნდა აღდგეს, ტაიმერების გადატვირთვა, სურათები და მონაცემები ჩაიტვირთება მეხსიერებაში და სხვა საჭირო პროცესები შეიძლება განახლდეს მხოლოდ მანამ, სანამ მომხმარებელი კვლავ იხილავს დატვირთულ აპლიკაციას.
applicationDidBecomeActive – ეს სტატუსი მიუთითებს, რომ აპლიკაცია ახლახან გააქტიურდა წინა პლანზე აღდგენის შემდეგ, ეს არის მეთოდი, რომელიც შეიძლება გამოყენებულ იქნას მომხმარებლის ინტერფეისში დამატებითი კორექტირების შესასრულებლად ან UI-ის პირვანდელ მდგომარეობაში აღდგენისთვის და ა.შ. ეს მეთოდი რეალურად ხდება. როდესაც მომხმარებელი უკვე ხედავს ეკრანზე, ამიტომ აუცილებელია ბალანსიდან განისაზღვროს რა ხდება ამ მეთოდით და წინა მეთოდით. მათ ერთმანეთის მიყოლებით ეძახიან რამდენიმე მილიწამის სხვაობით.
applicationWillTerminate - ეს მდგომარეობა ხდება აპლიკაციის დასრულებამდე რამდენიმე მილიწამით ადრე, ანუ განაცხადის რეალურად დასრულებამდე. ან ხელით მრავალსამუშაოდან ან მოწყობილობის გამორთვისას. ეს მეთოდი უნდა იქნას გამოყენებული დამუშავებული მონაცემების შესანახად და ყველა აქტივობის დასასრულებლად და მონაცემების წასაშლელად, რომლებიც აღარ იქნება საჭირო.
applicationDidReceiveMemoryWarning - და ეს არის მდგომარეობა, რომელზეც აქ ბევრია განხილული, საჭიროების შემთხვევაში, iOS ამოიღებს აპლიკაციას მეხსიერებიდან, თუ ის იყენებს სისტემის რესურსებს ზედმეტად. მე არ ვიცი ზუსტად რას აკეთებს iOS ფონურ აპებთან, მაგრამ თუ მას სჭირდება აპი სხვა პროცესებისთვის რესურსების გასათავისუფლებლად, ის მეხსიერების გაფრთხილებას სთხოვს, გაათავისუფლოს მასში არსებული რესურსები. ასე რომ, ეს მეთოდი იწოდება აპლიკაციაში და დეველოპერებმა უნდა განახორციელონ ის ისე, რომ აპლიკაციამ დათმოს ის მეხსიერება, რაც აქვს, შეინახოს დამუშავებული და წაშალოს მეხსიერებიდან არასაჭირო მონაცემები და სხვაგვარად ადეკვატურად გაათავისუფლოს მეხსიერება. მართალია, ბევრი დეველოპერი, მაგალითად დამწყები, არ ფიქრობს ასეთ საკითხებზე ან არ ესმით, შემდეგ კი შეიძლება მოხდეს, რომ მათმა აპლიკაციამ საფრთხე შეუქმნას ბატარეის ხანგრძლივობას და/ან ზედმეტად მოიხმაროს სისტემის რესურსები ფონზეც კი. არ ვიცი, როგორ მოიქცევა iOS, თუ აპლიკაცია არაფერს გააკეთებს მეხსიერების გაფრთხილების მიღების შემდეგ და აგრძელებს სისტემის რესურსების მოხმარებას, როგორც ადრე.
ეს რამდენიმე მდგომარეობა და ასოცირებული მეთოდი დგას iOS-ის მთელი „მრავალდავალებების“ მიღმა... ეს შესანიშნავი სისტემაა, თუ დეველოპერები არ უგულებელყოფენ პასუხისმგებლობის საჭიროებას იმაზე, თუ რას აფუჭებენ აპები მათი მომხმარებლების მოწყობილობებზე, თუ ისინი მინიმუმამდე დაიყვანენ. ან მიიღეთ გაფრთხილებები სისტემიდან და სხვა…
ვიმედოვნებ, რომ ეს მოკლე აღწერა დაგეხმარებათ გაიგოთ, თუ როგორ მონაწილეობს აპლიკაცია ყველაფრის შეუფერხებლად მუშაობაში. ასე რომ, თითქმის შესაძლებელია იმის თქმა, რომ ეს არის მომხმარებლის მიერ არასწორი გამოყენების შეცდომა, რაც შეიძლება გავიგოთ, როგორც - თუ იყენებთ ძირითადად უფასო აპლიკაციებს მოყვარული დეველოპერებისგან დიდი რაოდენობით, თქვენი iOS მოწყობილობა უარესად იმუშავებს, ვიდრე დიდი რაოდენობით. უფასო და ფასიანი აპლიკაციების რაოდენობა გამოცდილი ან პროფესიონალი დეველოპერებისგან. ეს არ ნიშნავს იმას, რომ ორივე წრეში არ არის გამონაკლისი. მაგალითად, Foursquare იქცევა საკმაოდ უცნაურად და მომთხოვნად და ამავდროულად უკვე უნდა ველოდოთ, რომ ისინი არიან ძალიან გამოცდილი დეველოპერები, რომლებიც დიდ დროს უთმობენ მეხსიერებას და ბატარეის მართვას, მაგრამ პირიქითაა. 4SQ-ის ყველაზე დიდი პრობლემა არის სერვერებთან კომუნიკაცია, რომელიც ხშირად ჩერდება და გადატვირთულია. ეს მხოლოდ მაგალითია იმისა, რომ ცნობილ აპლიკაციებსაც კი აქვთ პრობლემები, რაც არ ცვლის იმ ფაქტს, რომ 4SQ შესანიშნავი სერვისია.
გაერთეთ ვაშლები!! :)
ინფორმაცია სტატიას დავამატეთ ავტორის კეთილი ნებართვით ;-)
ბოდიშს გიხდით, ENTER ყველგან იყო აბზაცებს შორის, მათ შეეძლოთ რაიმე გაეკეთებინათ აქ, რათა კომენტარებს ჰქონდეთ RICH TEXT FORMATING მაინც.
ArnieX: მადლობა კომენტარისთვის!!
ფარამირს: მე მხოლოდ შენს პრობლემას ეხება, არ ვიცი დაგეხმარება თუ არა შენს შემთხვევაში, მაგრამ საკუთარი გამოცდილებიდან ვიცი, რომ თუ აპლიკაციას დახურავ (მულტიტასკინგში) მის დახურვას რამდენიმე წამი სჭირდება, ასე რომ, თუ თქვენ გამორთეთ, გირჩევთ დაელოდოთ რამდენიმე წამს (დარწმუნებისთვის ველოდები დაახლოებით 10 წამს) სანამ ის აუცილებლად დასრულდება და მხოლოდ ამის შემდეგ დავიწყებ თავიდან.
მოგესალმებათ ;) მოხარული ვიქნები დაგეხმარებით, თუ მექნება წვლილი შევიტანო.
მეებთან როგორ უნდა იყოს, მისი საშუალებით ICQ ან FB ჩატში რომ შევდივარ ავტომატურად გამოდის 10 წუთის შემდეგ და ოფლაინში გავდივარ თუ აგრძელებს მუშაობას? მადლობა დაზუსტებისთვის :P
ათი წუთის შემდეგ აპლიკაციის ინტერნეტთან კავშირი უბრალოდ წყდება. თუმცა, თქვენ კვლავ იქნებით ონლაინ Meeba სერვერზე და მიიღებთ Push შეტყობინებას, თუ ვინმე მოგწერთ. აპლიკაციის ხელახლა გახსნის შემდეგ კავშირი მალე დამყარდება და შეგიძლიათ ხალისიანად გააგრძელოთ საუბარი.
ასე რომ, თუ სწორად გავიგე თქვენს მიერ მიბმული სტატია, სტატისტიკა ეხება მხოლოდ აპლიკაციის ავარიას, როდესაც ისინი დაიწყება, რაც საკმაოდ მცირე პროცენტია, როდესაც ავარია შეიძლება მოხდეს. ამიტომ, ამ „კვლევიდან“ შეუძლებელია დავასკვნათ, რომ iOS ნაკლებად სტაბილურია ჩემი აზრით. გარდა ამისა, Forbes-დან აღებული სტატიის მთარგმნელს დაავიწყდა ეთქვა, რომ კომპანია, რომელიც აწვდის მონაცემებს აპლიკაციების ავარიულობის შესახებ, მხარს უჭერს Google-ს, მათ შორის სხვათა შორის ("Crittercism, რომელიც მხარს უჭერს Google Ventures,...").