ปิดโฆษณา

ยังมีผู้คนจำนวนมากที่ไม่รู้ว่าการทำงานหลายอย่างพร้อมกันใน iOS ทำงานอย่างไร อย่างไรก็ตาม ก่อนอื่น จำเป็นต้องชี้ให้เห็นว่านี่ไม่ใช่การทำงานหลายอย่างพร้อมกันจริงๆ แต่เป็นโซลูชันที่ชาญฉลาดมากที่ไม่สร้างภาระให้กับระบบหรือผู้ใช้

เรามักจะได้ยินความเชื่อโชคลางว่าแอปที่ทำงานอยู่เบื้องหลังใน iOS จะทำให้หน่วยความจำในการทำงานเต็ม ซึ่งทำให้ระบบทำงานช้าลงและอายุการใช้งานแบตเตอรี่ ดังนั้นผู้ใช้จึงควรปิดแอปด้วยตนเอง แถบมัลติทาสกิ้งไม่มีรายการกระบวนการพื้นหลังที่ทำงานอยู่ทั้งหมด แต่มีเพียงแอปพลิเคชันที่เพิ่งเปิดตัวเท่านั้น ดังนั้นผู้ใช้จึงไม่ต้องกังวลกับกระบวนการที่ทำงานอยู่เบื้องหลัง ยกเว้นในบางกรณี เมื่อคุณกดปุ่มโฮม แอปพลิเคชันมักจะเข้าสู่โหมดสลีปหรือปิด เพื่อไม่ให้โหลดโปรเซสเซอร์หรือแบตเตอรี่อีกต่อไป และหากจำเป็น ก็จะทำให้หน่วยความจำที่จำเป็นว่างขึ้น

ดังนั้น นี่จึงไม่ใช่การทำงานหลายอย่างพร้อมกันอย่างเต็มรูปแบบเมื่อคุณมีกระบวนการทำงานหลายสิบกระบวนการ มีแอปพลิเคชันเดียวเท่านั้นที่ทำงานอยู่เบื้องหน้าเสมอ ซึ่งจะหยุดชั่วคราวหรือปิดโดยสมบูรณ์หากจำเป็น มีกระบวนการรองเพียงไม่กี่กระบวนการเท่านั้นที่ทำงานอยู่เบื้องหลัง นั่นเป็นเหตุผลว่าทำไมคุณจึงไม่ค่อยพบปัญหาแอปพลิเคชันขัดข้องบน iOS เช่น Android มีแอปพลิเคชันที่ทำงานอยู่มากมายซึ่งผู้ใช้ต้องดูแล ในอีกด้านหนึ่ง สิ่งนี้ทำให้การทำงานกับอุปกรณ์ไม่เป็นที่พอใจ และในทางกลับกัน ทำให้การเริ่มต้นและการเปลี่ยนระหว่างแอปพลิเคชันช้าลง

ประเภทรันไทม์ของแอปพลิเคชัน

แอปพลิเคชันบนอุปกรณ์ iOS ของคุณอยู่ใน 5 สถานะเหล่านี้:

  • วิ่ง: แอปพลิเคชันเริ่มต้นและทำงานในเบื้องหน้า
  • พื้นหลัง: มันยังคงทำงานอยู่แต่ทำงานในพื้นหลัง (เราสามารถใช้แอปพลิเคชันอื่นได้)
  • ถูกระงับ: ยังคงใช้ RAM แต่ไม่ทำงาน
  • ไม่ได้ใช้งาน: แอปพลิเคชันกำลังทำงานอยู่ แต่มีคำสั่งทางอ้อม (เช่น เมื่อคุณล็อคอุปกรณ์โดยที่แอปพลิเคชันทำงานอยู่)
  • ไม่ได้ทำงาน: แอปพลิเคชันสิ้นสุดลงหรือยังไม่ได้เริ่มต้น

ความสับสนเกิดขึ้นเมื่อแอปเข้าสู่พื้นหลังเพื่อไม่ให้รบกวน เมื่อคุณกดปุ่มโฮมหรือใช้ท่าทางเพื่อปิดแอปพลิเคชัน (iPad) แอปพลิเคชันจะเข้าสู่พื้นหลัง แอพส่วนใหญ่จะถูกระงับภายในไม่กี่วินาที (แอพเหล่านี้ถูกเก็บไว้ใน RAM ของ iDevice เพื่อให้สามารถเปิดใช้งานได้อย่างรวดเร็ว แอพเหล่านี้ไม่โหลดโปรเซสเซอร์มากนักและช่วยประหยัดอายุการใช้งานแบตเตอรี่) คุณอาจคิดว่าหากแอพยังคงใช้หน่วยความจำ คุณมี เพื่อลบออกด้วยตนเองเพื่อเพิ่มพื้นที่ว่าง แต่คุณไม่จำเป็นต้องทำอย่างนั้น เพราะ iOS จะทำเพื่อคุณ หากคุณมีแอพพลิเคชั่นที่ต้องการการระงับในพื้นหลัง เช่น เกมที่ใช้ RAM จำนวนมาก iOS จะลบออกจากหน่วยความจำโดยอัตโนมัติเมื่อจำเป็น และคุณสามารถรีสตาร์ทได้โดยการแตะที่ไอคอนแอพพลิเคชั่น

สถานะเหล่านี้จะไม่ปรากฏในแถบมัลติทาสก์ แผงจะแสดงเฉพาะรายการแอปที่เพิ่งเปิดตัว ไม่ว่าแอปจะหยุด หยุดชั่วคราว หรือทำงานในเบื้องหลังก็ตาม คุณอาจสังเกตเห็นว่าแอปพลิเคชันที่กำลังทำงานอยู่ไม่ปรากฏในแผงมัลติทาสก์

งานเบื้องหลัง

โดยปกติเมื่อคุณกดปุ่มโฮม แอปพลิเคชันจะทำงานในพื้นหลัง และหากคุณไม่ได้ใช้งาน แอปพลิเคชันจะหยุดทำงานชั่วคราวโดยอัตโนมัติภายในห้าวินาที ดังนั้น หากคุณกำลังดาวน์โหลดพอดแคสต์ ระบบจะประเมินว่าเป็นแอปพลิเคชันที่ทำงานอยู่ และจะชะลอการยกเลิกออกไปสิบนาที หลังจากผ่านไปอย่างช้าที่สุดสิบนาที กระบวนการจะถูกปล่อยออกจากหน่วยความจำ พูดง่ายๆ ก็คือ คุณไม่ต้องกังวลกับการขัดจังหวะการดาวน์โหลดของคุณด้วยการกดปุ่มโฮม ถ้ามันใช้เวลาไม่เกิน 10 นาทีจึงจะเสร็จสิ้น

ทำงานอย่างไม่มีกำหนดในพื้นหลัง

ในกรณีที่ไม่มีการใช้งาน ระบบจะยุติแอปพลิเคชันภายในห้าวินาที และในกรณีของการดาวน์โหลด การยกเลิกจะล่าช้าเป็นเวลาสิบนาที อย่างไรก็ตาม มีแอปพลิเคชันจำนวนเล็กน้อยที่ต้องทำงานในเบื้องหลัง นี่คือตัวอย่างบางส่วนของแอปที่สามารถทำงานในพื้นหลังได้อย่างไม่มีกำหนดใน iOS 5:

  • แอพพลิเคชั่นที่เล่นเสียงและต้องถูกขัดจังหวะไประยะหนึ่ง (การหยุดเพลงชั่วคราวระหว่างสนทนาโทรศัพท์ ฯลฯ)
  • แอปพลิเคชันที่ติดตามตำแหน่งของคุณ (ซอฟต์แวร์นำทาง)
  • แอปพลิเคชันที่รับสาย VoIP เช่น หากคุณใช้ Skype คุณสามารถรับสายได้แม้ว่าแอปพลิเคชันนั้นจะอยู่ในพื้นหลังก็ตาม
  • ดาวน์โหลดอัตโนมัติ (เช่น แผงหนังสือ)

ควรปิดแอปพลิเคชันทั้งหมดหากไม่ได้ทำงานอีกต่อไป (เช่น การดาวน์โหลดในเบื้องหลัง) อย่างไรก็ตาม มีข้อยกเว้นที่ทำงานอยู่เบื้องหลังอย่างต่อเนื่อง เช่น แอพ Mail ในเครื่อง หากทำงานอยู่เบื้องหลัง จะใช้หน่วยความจำ การใช้งาน CPU หรือลดอายุการใช้งานแบตเตอรี่

แอพที่ได้รับอนุญาตให้ทำงานในเบื้องหลังอย่างไม่มีกำหนดสามารถทำทุกอย่างได้ในขณะที่ใช้งาน ตั้งแต่การเล่นเพลงไปจนถึงการดาวน์โหลดตอนใหม่ของ Podcast

ดังที่ได้กล่าวไปแล้ว ผู้ใช้ไม่จำเป็นต้องปิดแอปที่ทำงานอยู่เบื้องหลัง ข้อยกเว้นประการเดียวคือเมื่อแอปที่ทำงานอยู่เบื้องหลังขัดข้องหรือไม่ตื่นจากโหมดสลีปอย่างถูกต้อง จากนั้นผู้ใช้สามารถปิดแอปพลิเคชันได้ด้วยตนเองในแถบมัลติทาสก์ แต่สิ่งนี้เกิดขึ้นไม่บ่อยนัก

โดยทั่วไปแล้ว คุณไม่จำเป็นต้องจัดการกระบวนการในเบื้องหลังเพราะระบบจะดูแลกระบวนการเหล่านั้นเอง นั่นเป็นเหตุผลว่าทำไม iOS ถึงเป็นระบบที่ใหม่และรวดเร็ว

จากมุมมองของนักพัฒนา

แอปพลิเคชันสามารถตอบสนองกับสถานะที่แตกต่างกันทั้งหมดหกสถานะโดยเป็นส่วนหนึ่งของการทำงานหลายอย่างพร้อมกัน:

1. แอปพลิเคชัน WillResignActive

ในการแปล สถานะนี้หมายความว่าแอปพลิเคชันจะลาออกจากการเป็นแอปพลิเคชันที่ใช้งานอยู่ (นั่นคือ แอปพลิเคชันในเบื้องหน้า) ในอนาคต (ไม่กี่วินาที) สิ่งนี้เกิดขึ้นเมื่อรับสายขณะใช้งานแอปพลิเคชัน แต่ในขณะเดียวกันวิธีนี้ยังทำให้เกิดสถานะนี้ก่อนที่แอปพลิเคชันจะเข้าสู่พื้นหลัง ดังนั้นคุณต้องคำนึงถึงการเปลี่ยนแปลงเหล่านี้ด้วย วิธีนี้ยังเหมาะสมที่จะระงับกิจกรรมทั้งหมดที่กำลังดำเนินการเมื่อมีสายเรียกเข้าและรอจนกระทั่งสิ้นสุดการโทร เป็นต้น

2. แอปพลิเคชันDidEnterBackground

สถานะระบุว่าแอปพลิเคชันอยู่ในพื้นหลัง นักพัฒนาควรใช้วิธีนี้เพื่อระงับกระบวนการทั้งหมดที่ไม่จำเป็นต้องทำงานในพื้นหลัง และล้างหน่วยความจำของข้อมูลที่ไม่ได้ใช้และกระบวนการอื่น ๆ เช่น ตัวจับเวลาที่หมดอายุ การล้างภาพที่โหลดออกจากหน่วยความจำที่ไม่จำเป็น หรือการปิด การเชื่อมต่อกับเซิร์ฟเวอร์ เว้นแต่เป็นสิ่งสำคัญสำหรับแอปพลิเคชันที่จะทำการเชื่อมต่อให้เสร็จสมบูรณ์ในเบื้องหลัง เมื่อมีการเรียกใช้เมธอดในแอปพลิเคชัน โดยทั่วไปควรใช้วิธีดังกล่าวเพื่อระงับแอปพลิเคชันโดยสมบูรณ์ หากบางส่วนไม่จำเป็นต้องทำงานในเบื้องหลัง

3. แอปพลิเคชัน WillEnterForeground

สถานะนี้จะตรงกันข้ามกับสถานะแรก ซึ่งแอปพลิเคชันจะลาออกจากสถานะใช้งานอยู่ สถานะเพียงหมายความว่าแอปที่กำลังนอนหลับจะกลับมาทำงานต่อจากพื้นหลังและปรากฏอยู่เบื้องหน้าภายในไม่กี่มิลลิวินาทีถัดไป นักพัฒนาควรใช้วิธีนี้เพื่อดำเนินกระบวนการใด ๆ ที่ไม่ได้ใช้งานในขณะที่แอปพลิเคชันอยู่ในพื้นหลังต่อ ควรสร้างการเชื่อมต่อกับเซิร์ฟเวอร์อีกครั้ง รีเซ็ตตัวจับเวลา รูปภาพและข้อมูลโหลดลงในหน่วยความจำ และกระบวนการที่จำเป็นอื่นๆ สามารถดำเนินการต่อได้ก่อนที่ผู้ใช้จะเห็นแอปพลิเคชันที่โหลดอีกครั้ง

4. แอปพลิเคชัน DidBecomeActive

สถานะระบุว่าแอปพลิเคชันเพิ่งเปิดใช้งานหลังจากถูกกู้คืนไปที่เบื้องหน้า นี่เป็นวิธีการที่สามารถใช้เพื่อปรับเปลี่ยนอินเทอร์เฟซผู้ใช้เพิ่มเติมหรือเพื่อคืนค่า UI ให้เป็นสถานะดั้งเดิม ฯลฯ ซึ่งเกิดขึ้นจริงในขณะที่ผู้ใช้เห็นแอปพลิเคชันบนจอแสดงผลแล้ว ดังนั้นจึงจำเป็นต้อง พิจารณาด้วยความระมัดระวังว่าจะเกิดอะไรขึ้นในวิธีนี้และในวิธีการก่อนหน้า พวกมันถูกเรียกทีละอันโดยมีความแตกต่างกันไม่กี่มิลลิวินาที

5. การสมัครจะยุติ

สถานะนี้เกิดขึ้นสองสามมิลลิวินาทีก่อนที่แอปพลิเคชันจะออก นั่นคือก่อนที่แอปพลิเคชันจะยุติการทำงานจริง ไม่ว่าจะด้วยตนเองจากการทำงานหลายอย่างพร้อมกันหรือเมื่อปิดอุปกรณ์ ควรใช้วิธีการนี้เพื่อบันทึกข้อมูลที่ประมวลผล เพื่อยุติกิจกรรมทั้งหมด และเพื่อลบข้อมูลที่ไม่จำเป็นต้องใช้อีกต่อไป

6. แอปพลิเคชันDidReceiveMemoryWarning

เป็นสถานะสุดท้ายที่มีการกล่าวถึงมากที่สุด หากจำเป็น จะต้องรับผิดชอบในการลบแอปพลิเคชันออกจากหน่วยความจำ iOS หากใช้ทรัพยากรระบบโดยไม่จำเป็น ฉันไม่ทราบแน่ชัดว่า iOS ทำอะไรกับแอปพื้นหลัง แต่ถ้าต้องการให้แอปปล่อยทรัพยากรไปยังกระบวนการอื่น ระบบจะแจ้งเตือนหน่วยความจำให้ปล่อยทรัพยากรใดก็ตามที่มี ดังนั้นวิธีนี้จึงถูกเรียกในแอปพลิเคชัน นักพัฒนาควรใช้งานเพื่อให้แอปพลิเคชันสละหน่วยความจำที่จัดสรรไว้ บันทึกทุกอย่างที่ดำเนินการอยู่ ล้างข้อมูลที่ไม่จำเป็นออกจากหน่วยความจำ และทำให้หน่วยความจำว่างอย่างเพียงพอ เป็นเรื่องจริงที่นักพัฒนาจำนวนมาก แม้แต่ผู้เริ่มต้น ไม่ได้คิดหรือเข้าใจเรื่องดังกล่าว และอาจเกิดขึ้นได้ว่าแอปพลิเคชันของพวกเขาคุกคามอายุการใช้งานแบตเตอรี่และ/หรือใช้ทรัพยากรระบบโดยไม่จำเป็น แม้ว่าจะอยู่เบื้องหลังก็ตาม

คำตัดสิน

สถานะทั้งหกนี้และวิธีการที่เกี่ยวข้องเป็นเบื้องหลังของ "มัลติทาสก์" ทั้งหมดใน iOS มันเป็นระบบที่ยอดเยี่ยม ตราบใดที่นักพัฒนาไม่ละเลยความจริงที่ว่ามีความจำเป็นต้องรับผิดชอบต่อสิ่งที่แอพพลิเคชั่นส่งไปบนอุปกรณ์ของผู้ใช้ของพวกเขา ถ้าพวกเขาถูกย่อให้เล็กสุดหรือได้รับคำเตือนจากระบบและอื่นๆ

แหล่งที่มา: Macworld.com

ผู้เขียน: ยาคุบ โปชาเร็ก, มาร์ติน ดูเบ็ค (อาร์นี่เอ็กซ์)

 
คุณมีปัญหาในการแก้ไขหรือไม่? คุณต้องการคำแนะนำหรืออาจค้นหาใบสมัครที่เหมาะสมหรือไม่? อย่าลังเลที่จะติดต่อเราผ่านแบบฟอร์มในส่วนนี้ การให้คำปรึกษาครั้งต่อไปเราจะตอบคำถามของคุณ

.