ทำไมแบตเตอรี่ของ iPhone ถึงไม่ปิดแอพ


51

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

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


31
ความเข้าใจผิดคือส่วนที่“ วิ่งอยู่” แอพใน Switcher ไม่จำเป็นต้องทำงาน แต่ส่วนใหญ่ไม่ได้ใช้งานจริง คิดว่ามันเป็นรายการ“ ที่ใช้งานล่าสุด” มากกว่าการตรวจสอบกระบวนการ
nohillside

3
เช่นเดียวกับ patrix ฉันอยากจะเพิ่มว่า iOS ปิดแอพด้วยตัวเองเมื่อหน่วยความจำใกล้หมดถึงแม้ว่ามันจะดูเหมือนว่ามี 50 แอพที่กำลัง "ทำงาน" หากคุณกำลังดูวิดีโอมีโอกาสมากที่ 49 คนอื่น ๆ ถูกยกเลิกหลังจาก 2/3 นาที ตัวสลับแอพแสดงเฉพาะการจับภาพหน้าจอล่าสุดของแอพเหล่านั้น ณ จุดนี้
รหัสลิง

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

8
เราอาจจำเป็นต้องจัดการกับช้างในห้อง - สิ่งที่ทำให้คุณพูดว่า "เพียงแค่ทำให้แอปเหล่านี้ทำงาน" - และสิ่งที่เฉพาะเจาะจงคือ "ปิดแอพ" - iOS 11 ใช้งานสูงสุดสามแอพและบางแอพ ) ถ้าเรากำลังพูดถึงระบบปฏิบัติการในแง่ของจังหวะ / คนธรรมดา หากมีความตั้งใจที่จะให้มีการถกเถียงกันว่าจะลบภาพขนาดย่อของแอพที่บันทึกไว้ออกจาก UI แบบมัลติทาสก์หรือเปล่าลองมาอธิบายให้ชัดเจนในคำถาม
bmike

3
ฉันกลัวเพื่อนของฉันจริง ๆ โดยมี (ตอนนี้) 314 tans ฉันซาฟารีและ 57 แอพ "เปิด"
ทิม

คำตอบ:


64

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

อย่างไรก็ตามให้ฉันลองอธิบายโดยใช้การเปรียบเทียบ:

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

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

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

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

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

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

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

สรุป

  • คุณจะต้องออกจากแอปหากทำงานไม่ถูกต้อง (เช่นแอปหยุดทำงานแสดงว่าแอปไม่ทำงานอย่างถูกต้อง ฯลฯ )
  • แอพที่แสดงอยู่ใน App Switcher นั้นไม่จำเป็นต้องใช้งานจริง ๆ แล้วส่วนใหญ่ไม่ได้ทำงานเลย
  • แอพส่วนใหญ่ใน App Switcher จะอยู่ในสถานะถูกระงับ - ซึ่งหมายความว่าไม่ได้: ปรากฏบนหน้าจอ, ใช้รหัส, ใช้ CPU หรือ GPU หรือใช้แบตเตอรี่ อย่างไรก็ตามพวกเขายังคงมีอยู่ในหน่วยความจำจนกว่าพวกเขาจะถูกกำจัด (ถ้าจำเป็น) โดยระบบเพื่อเพิ่มหน่วยความจำ:

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

    ที่มา : ดูตารางที่ 2-3ภายในลิงค์อ้างอิงแรกที่ท้ายคำตอบนี้

  • ปพลิเคชันเท่านั้นทำงานจริงบน iPhone ของคุณที่จุดใดก็ตามในเวลาที่มีการใช้งานแอพพลิเค (เช่นหนึ่งที่ปรากฏบนหน้าจอ) และอื่น ๆ ใด ๆ ที่ทำงานในพื้นหลัง ( หมายเหตุ:มีข้อยกเว้นชั่วคราวบางประการในกรณีของแอพที่ยังคงต้องใช้เวลาในการประมวลผลโค้ดที่เริ่มต้นแล้วในขณะที่แอปพลิเคชันใช้งาน - โดยทั่วไปนี่เป็นเพียงลำดับวินาทีเท่านั้น .

  • ในแง่ของแอพที่ทำงานในพื้นหลังคุณสามารถควบคุมได้ว่าจะอนุญาตให้แอปใด (ถ้าเปิดอยู่) โดยไปที่การตั้งค่า> ทั่วไป> รีเฟรชแอปพื้นหลัง ( หมายเหตุ:เพียงเพราะคุณเห็นแอปที่แสดงที่นี่ไม่ได้หมายความว่ามันจะทำงานในพื้นหลัง แต่การปิดใช้งานที่นี่หมายความว่ามันจะไม่แน่นอน!)
  • ถ้า iPhone ของคุณถูกล็อคแล้ว app ที่ถูกใช้งาน (เช่นมันก็ปรากฏบนหน้าจอ) เมื่อคุณล็อคอุปกรณ์ของคุณอยู่ในขณะนี้ไม่ได้ใช้งาน อย่างไรก็ตามถ้าคุณเพิ่งล็อค iPhone ของคุณและมันยังอยู่ในขั้นตอนการเรียกใช้โค้ดหรือกำลังทำงานในพื้นหลัง (เช่นเล่นเพลง ฯลฯ ) ดังนั้นจึงไม่ได้ใช้ CPU, GPU หรือแบตเตอรี่

อ้างอิง

  1. สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสถานะต่าง ๆ ที่แอพสามารถอยู่ได้โปรดดูที่คู่มือการเขียนโปรแกรมของ Apple App สำหรับ iOS: Execution States สำหรับแอ
  2. สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแอปทำงานในพื้นหลังให้ดูที่แอปเปิ้ลคู่มือการเขียนโปรแกรม App สำหรับ iOS: การดำเนินการพื้นหลัง

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

24
สิ่งที่การระบายน้ำแบตเตอรี่จะเริ่มต้นแอปอีกครั้ง การระงับแอพราคาถูก แอปที่ถูกระงับการทำงานต่อมีราคาถูก แต่ต้องโหลดแอพอย่างสมบูรณ์ตั้งแต่เริ่มต้นใช้ทรัพยากรจำนวนมาก (แม้ว่าบางแอพอาจยังถูกแคช): ระบบปฏิบัติการจำเป็นต้องโหลดแอพและเฟรมเวิร์กที่ขึ้นต่อกันทั้งหมดรหัสเริ่มต้นแอพที่สมบูรณ์ต้องทำงานอีกครั้งเป็นต้น .
DarkDust

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

7
นี่เป็นคำตอบที่มีประโยชน์ แต่ไม่มีทางที่ iOS จะระงับแอปทั้งหมด 50 แอพเว้นแต่ว่าแต่ละแอพจะมีหน่วยความจำแบบไมโครสโคปอย่างแท้จริง ฉันสลับระหว่างแอพขนาดใหญ่ทั้งวัน (Safari, twitter, Facebook, Reddit, YouTube, ฯลฯ ) และฉันมักจะได้รับ "full reload" สลับกลับไปที่แอพเพียง 2 หรือ 3 ใบลงในรายการที่เพิ่งใช้ล่าสุด
BradC

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

22

คำตอบที่ให้นั้นถูกต้องฉันแค่ต้องการชี้แจงจากมุมมองของนักพัฒนา iOS

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

ที่ถูกกล่าวว่าหลักฐานคือ:

  • iOS รู้เกี่ยวกับหน่วยความจำมากกว่าเรา มันรู้ว่ามันมีมากแค่ไหนและมันต้องการเท่าไหร่ (ในระดับหนึ่ง)
  • iOS มีการควบคุมหน่วยความจำเต็มรูปแบบ มันมีคำพูดสุดท้ายว่าใครใช้อะไร
  • หาก iOS ต้องการหน่วยความจำก็จะพบมันและมักจะทำโดยการฆ่ากระบวนการอื่น ๆ ที่ไม่ได้ใช้งานเป็นระยะเวลาหนึ่ง (และมีกฎอยู่เบื้องหลังหลายฉากเราไม่รู้จักพวกเขาทั้งหมดและเราก็ไม่ทราบจริงๆ กังวลเกี่ยวกับพวกเขา)
  • ทุกอย่างที่ตัวประมวลผล (CPU) ทำนั้นใช้พลังงาน ทุกอย่างแน่นอน อย่าลืมคอมพิวเตอร์เป็นเพียงอิเล็กตรอนเล็ก ๆ ที่เคลื่อนย้ายมันไปมาในพื้นที่เล็ก ๆ
  • เมื่อแอพถูกฆ่าจะมีโปรโตคอล (สัญญา) ที่ตกลงกันไว้ซึ่งกำหนดสิ่งที่ต้องทำ iOS บังคับใช้และดำเนินโปรโตคอลเหล่านี้ แต่งานต้องทำมันไม่ฟรีและไม่ถูกเสมอไป (ขึ้นอยู่กับว่าแอพคืออะไร)

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

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

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

อย่างไรก็ตาม ...

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

ฉันเคยมีแอพพลิเคชั่นมากมายเช่น Lyft, United Airlines หรือ Twitter ซึ่งท้ายที่สุดก็อยู่ในสภาพเสีย (หรือทำงานไม่ถูกต้อง) เพราะคุณอยู่ในเครือข่ายที่ไม่ดี (iOS แย่มากที่ การกู้คืนจากเครือข่ายที่ไม่ดีในช่วง 3-4 ครั้งที่ผ่านมา) หรือเครือข่ายไม่ตอบสนองอย่างถูกต้อง

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

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

การเปรียบเทียบรถยนต์

ฉันรู้ว่าเทคโนโลยีรถยนต์ได้สูงและนี่คือไม่ได้เป็นตัวอย่างที่ดี แต่เล่นกับฉันที่นี่

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

คุณปิดแอพเป็นคนที่เทียบเท่ากับการปิดรถทุกครั้งที่ไฟหยุด ตรงข้ามกับการปล่อยให้มันว่างจนกว่าคุณจะต้องการมันอีกครั้งโดยปกติไม่กี่วินาทีต่อมา

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

โดยทั่วไปแล้วคุณปิดเครื่องยนต์ทุกครั้งที่คุณฆ่าแอพและคุณไม่ปล่อยให้กลไก "สมาร์ท" ของ idling เครื่องยนต์ของคุณดูแลมันดังนั้นเมื่อไฟเปลี่ยนเป็นสีเขียวคุณสามารถกดคันเร่งและ เครื่องยนต์ทำงานได้เร็วกว่าถ้าหยุด 100% การสตาร์ทเครื่องยนต์จากสถานะหยุดทำงานยังใช้พลังงานมากกว่าเชื้อเพลิงคุณต้องเปลี่ยนสตาร์ทเพื่อให้เครื่องยนต์สามารถหมุนเหวี่ยงฉีดน้ำมันเชื้อเพลิงและสร้างประกายไฟดังนั้น ... มันเป็นงานที่อยู่เบื้องหลัง แอพเป็นเหมือนเครื่องมือ :)


1
ฮ่าฮ่าฉันชอบการเปรียบเทียบ (และคำตอบของคุณ) :)
Monomeeth

คำถามเกี่ยวกับความคิดเห็นของคุณ: แอปที่ทำงานผิดปกติ: "[... ] ถ้าคุณต้องการให้แอปทำงานจริง ๆ ตอนนี้คุณต้องไปข้างหน้าและชำระค่าใช้จ่ายในการฆ่ามันและรีสตาร์ทตั้งแต่เริ่มต้นคุณใช้แบตเตอรี่มากขึ้น โดยการทำเช่นนั้น [... ] "คุณเชื่อหรือไม่ว่าเรื่องนี้เป็นสิ่งที่สิ้นเปลืองในระดับสากลมากขึ้น? ในขณะที่ฉันไม่ได้ออกจากแอพเป็นอย่างอื่นฉันมักจะคิดว่าแอพที่แฮงค์อัพหรือมีปัญหามีแนวโน้มที่จะใช้ทรัพยากรจำนวนมากโดยพยายามซ้ำ ๆ และล้มเหลวในการทำสิ่งที่ต้องการ ฉันเห็นว่าสิ่งนี้อาจมีความเข้มข้นน้อยกว่าการเริ่มต้นใหม่ตั้งแต่เริ่มต้นคุณเชื่อว่าเป็นกรณีปกติหรือไม่
brhfl

1
@brhfl มันยากที่จะบอกว่าแต่ละแอปเป็นโลกที่แตกต่าง มีสัญญาณที่ชัดเจนว่ามีบางอย่างผิดปกติ หากโทรศัพท์ของคุณร้อนแรงมากในช่วงเวลาสั้น ๆ ในขณะที่คุณกำลังพยายามใช้แอพอาจหมายความว่ามีการใช้งาน CPU หากโทรศัพท์รู้สึกเฉื่อย (เช่นภาพเคลื่อนไหวที่ข้ามเฟรม) นี่เป็นสัญญาณที่ดีว่ามีบางสิ่งที่ใช้ทรัพยากรมากกว่าที่ควรจะเป็นและในกรณีเหล่านั้นการฆ่าแอปที่สงสัยว่าเป็นวิธีที่จะไป โดยทั่วไปหากแอปถูกระงับ (พื้นหลัง) แม้ว่ามันจะไม่ได้ดีแอปนั้นก็จะไม่มีทางเลือกนอกจากจะมีพฤติกรรม หรือความเสี่ยงที่ iOS ถูกฆ่า
Martin Marconcini

1
  1. หากคุณบังคับปิดแอพโดยสิ้นเชิงเมื่อคุณต้องการเปิดแอปอีกครั้งในภายหลังค่าใช้จ่ายที่เกี่ยวข้องกับการเปิดตัวอินสแตนซ์ใหม่ของแอพนั้นจะมี CPU และพลังงานที่เข้มข้นกว่าเพียงแค่เปลี่ยนจากแอปหนึ่งเป็นอีกแอปหนึ่ง
  2. เมื่อแอพกำลังนั่งอยู่ในหน่วยความจำเว้นแต่ว่ามันถูกสร้างขึ้นเพื่อให้ทำงานในพื้นหลังก็มักจะหยุดชั่วคราวหรือถูกฆ่าและไม่ใช้วงจร CPU ใด ๆ (ปกติ) หากเป็นแอพที่ค่อนข้างเรียบง่ายมันจะเป็นเพียงแค่นั่งอยู่ตรงนั้นโดยใช้หน่วยความจำ ในกรณีดังกล่าวสถานะของแอพจะยังคงอยู่ที่อื่น (บนที่เก็บข้อมูลอุปกรณ์ในกรณีของ Android) เพื่อให้สามารถเรียกคืนสถานะแอปได้ในภายหลัง เพื่อให้ความคิดแก่คุณข้อความที่ยังไม่ได้ส่งค่อนข้างยาวที่ฉันเขียนในแอพ Viber ในโทรศัพท์ของฉันทำให้โทรศัพท์ปิดตัวลงเนื่องจากมีแบตเตอรีหมด หลังจากรีสตาร์ทโทรศัพท์แล้ว Viber ฉันพบข้อความที่รอให้ฉันส่ง Halleluja
  3. ขึ้นอยู่กับชิปหน่วยความจำของคุณไม่ว่าจะมีศูนย์หรือคนจะไม่ทำให้ความแตกต่างที่สำคัญในการใช้พลังงาน ดังนั้นการเก็บรักษาสิ่งต่าง ๆ ไว้ในหน่วยความจำไม่ทำให้คุณประหยัดแบตเตอรี่ได้อย่างมาก
  4. เมื่อแอพอยู่ในโหมดสลีปลึกมาก (โปรดยืนยันสิ่งนี้) เฉพาะการอ้างอิงถึงแอปนั้นจะปรากฏในแอพสลับที่เป็นสแน็ปช็อตของหน้าจอสุดท้ายที่มองเห็นได้ก่อนที่จะลงไป ฉันกำลังพูดแบบนี้เพราะอยู่มาวันหนึ่งฉันได้ตัดสินใจปิดแอพทั้งหมดใน iPad ของฉันและฉันประหลาดใจกับจำนวนแอพที่ฉันต้องปิด มันเป็นแอพมากกว่า 60 แอพ สิ่งเหล่านี้ไม่สามารถเก็บไว้ในหน่วยความจำของ iPad ได้ทั้งหมด ฉันเห็นแอพบางตัวในนั้นซึ่งใช้มาหลายเดือนแล้ว

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

การเปรียบเทียบนี้เป็น IMO คล้ายกับตำนานการประหยัดหน่วยความจำ


-1

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

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

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

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

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

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

ทั้งหมดนี้พูดได้ว่าการเปิดแอปไว้ส่วนใหญ่จะมีประสิทธิภาพมากกว่าเว้นแต่จะมีแอพเปิดมากเกินไป แต่ฉันไม่แน่ใจว่าต้องเปิดแอพกี่แอปเพื่อให้ถึงขีด จำกัด นี้ถ้ามีจำนวน

แหล่งที่มา:

ตัวเก็บขยะ SGen สำหรับ Mono: http://www.mono-project.com/docs/advanced/garbage-collector/sgen/

ภาพรวมของตัวสร้างโปรไฟล์หน่วยความจำสำหรับทั้งแอป iOS และ Android Xamarin ซึ่งแสดงวิธีจัดการหน่วยความจำโดยแอพ (ชุดการทำงานไบต์ส่วนตัวการจัดสรรหน่วยความจำ ฯลฯ ) https://blog.xamarin.com/say-hello-to -the-xamarin-Profiler /


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

2
ทั้งหมดนี้เป็นจริงสำหรับระบบปฏิบัติการ "เต็มรูปแบบ" ในการทำงานหลายอย่างพร้อมกันของแอพที่กำลังทำงานอย่างเต็มที่ ไม่ใช่ในกรณีของ iOS (ยกเว้นการกำหนดค่าหน้าจอแยกที่ใหม่กว่า) ฉันไม่ได้บอกผมบวกคุณผิดฉันแค่บอกว่าสัญชาตญาณของคุณจากระบบปฏิบัติการอื่น ๆ อาจใช้ไม่ได้ที่นี่
BradC

1
และ IMHO คุณสร้างความสับสนให้แอปสลับกับรายการแอป“ open“ /„ in memory” เห็นได้ชัดว่าไม่ใช่กรณีดังนั้นรอยเท้าหน่วยความจำอาจจะเหมือนกันสำหรับ iPhone ที่มี 5 หรือ 20 แอพในตัวสลับ
nohillside

2
การจัดการหน่วยความจำของเฟรมเวิร์กโมโน / ซามารินไม่ได้เป็นตัวแทนของการทำงานของแอพ / บริการดั้งเดิมบนแพลตฟอร์ม iOS iOS และรันไทม์ Objective-C / Swift ไม่ได้ใช้การรวบรวมขยะ
Mike Mertsock

2
@TrevorHart ใช้การนับการอ้างอิงอัตโนมัติdeveloper.apple.com/library/content/documentation/Swift/?hl=th
Mateusz Szlosek

-2

เวอร์ชั่นใหม่ทั้งหมด: เป็นการดีกว่าเพราะระบบปฏิบัติการได้รับการออกแบบมาเพื่อให้ดีขึ้นจนถึงจุดที่ผู้ใช้ต้องการให้แอพ (หรืออยู่ในสถานะ "หยุดชั่วคราว") เพื่อรวบรวมข้อมูลเพิ่มเติมเกี่ยวกับการกระทำของคุณ [*] ในภายหลัง หากมีความจำเป็น.

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


[*] เพื่ออธิบายรายละเอียดเกี่ยวกับการรวบรวมข้อมูลในส่วนของคุณ ... แอปที่เก็บไว้ในหน่วยความจำอาจเป็น "หยุดชั่วคราว" หรือทำงานในพื้นหลัง คุณในฐานะเจ้าของอุปกรณ์ไม่สามารถรู้ได้ (ถ้าคุณไม่มีความรู้และแอพอื่น ๆ เพื่อสแกนการใช้งาน CPU) สิ่งที่แอปดังกล่าวกำลังทำอยู่ จากมุมมองของการรักษาความปลอดภัยผมแนะนำให้ปิดแอพที่คุณจะไม่ใช้ใน 10 นาทีถัดไป

ป.ล. แบบฝึกหัดนี้ทำบนอุปกรณ์ Android เช่นกัน ...


6
-1 คำตอบนี้จะดีกว่านี้ถ้าไม่มี "โทรศัพท์ของคุณถูกออกแบบมาเพื่อสอดแนมคุณ"
Nzall

4
"โทรศัพท์ของคุณถูกออกแบบมาเพื่อสอดแนมคุณ" ไม่ได้ใช้กับอุปกรณ์ Apple จริง ๆ - พวกเขาไม่ได้รับเงินจากข้อมูลส่วนบุคคล afaik
wizzwizz4

1
@ wizzwizz4 พูดว่าใคร
yo '14

1
@yo 'บอกว่าฉันไม่สามารถหาหลักฐานที่จะแนะนำว่าพวกเขาทำ สมมติว่ามีความเชื่อที่ดีและทุกสิ่ง
wizzwizz4
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.