რეკლამის დახურვა

ჯერ კიდევ არის ბევრი ადამიანი, ვინც არ იცის, როგორ მუშაობს 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)

 
თქვენც გაქვთ გადასაჭრელი პრობლემა? გჭირდებათ რჩევა ან იქნებ იპოვოთ სწორი აპლიკაცია? ნუ მოგერიდებათ დაგვიკავშირდეთ განყოფილებაში მოცემული ფორმის საშუალებით კონსულტაცია, შემდეგ ჯერზე ჩვენ ვუპასუხებთ თქვენს კითხვას.

.