จะเกิดอะไรขึ้นกับโปรแกรมที่ทำงานอยู่เมื่อกดปุ่ม“ home” ในโทรศัพท์ Android?


27

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

แต่นั่นก็ไม่ได้เกิดขึ้นอย่างสม่ำเสมอกับเกม Air Control บางครั้งเมื่อฉันเล่น Air Control และกด "home" และรันใหม่อีกครั้ง Air Control - หยุดชั่วคราว (ราวกับว่าฉันกดปุ่ม "หยุด") และฉันสามารถเล่นเกมต่อได้ บางครั้งสิ่งเดียวกันนำไปสู่ ​​Air Control ทำให้เกมตกต่ำ

ดูเหมือนว่าฉันจะไม่เข้าใจอะไรเลย

ข้อตกลงที่นี่คืออะไร? จะเกิดอะไรขึ้นกับโปรแกรมเมื่อกดปุ่ม "home" มันทำงานต่อไปหรือมันทำอะไร?


ฉันสงสัยว่าการกดปุ่มโฮมจะส่งผลให้พลังงานสิ้นเปลืองมากขึ้น
Flow

คำตอบ:


12

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

ยกเว้นว่าเมื่อโทรศัพท์ของคุณมีทรัพยากรเหลือน้อยเช่นหน่วยความจำโทรศัพท์จะเริ่มปิดแอพที่ทำงานในพื้นหลังเพื่อให้โทรศัพท์ของคุณมีทรัพยากรเพียงพอสำหรับสิ่งที่คุณพยายามทำ เกมมักเป็นแอพแรกที่โทรศัพท์จะ "ฆ่า" เพื่อประหยัดทรัพยากรเนื่องจากมักใช้หน่วยความจำและ CPU มากกว่าแอพอื่น ๆ นี่คือสาเหตุที่บางครั้งเกมของคุณยังคงหยุดทำงานชั่วคราวและบางครั้ง Android ก็ปิดเกมให้คุณ

Backปุ่มเป็นวิธีที่จะปพลิเคชันปิดเพื่อที่พวกเขาจะปิดจริง

ดูเพิ่มเติมวิธีปิดแอพใน Android คืออะไร?


26

งานเอกสารพัฒนา Android และ Back Stackนั้นครอบคลุมเรื่องนี้ค่อนข้างดี ข้อความที่ตัดตอนมาที่เกี่ยวข้อง:

งานคือหน่วยที่ติดต่อกันซึ่งสามารถย้ายไปที่ "พื้นหลัง" เมื่อผู้ใช้เริ่มงานใหม่หรือไปที่หน้าจอหลักผ่านปุ่มหน้าแรก ขณะที่อยู่ในพื้นหลังกิจกรรมทั้งหมดในงานจะหยุดลง แต่แบ็คสแต็กหลังสำหรับงานยังคงไม่เปลี่ยนแปลง - ภารกิจสูญเสียการโฟกัสในขณะที่งานอื่นเกิดขึ้นดังแสดงในรูปที่ 2 ภารกิจสามารถกลับไปที่ " พื้นหน้า "เพื่อให้ผู้ใช้สามารถเลือกจุดที่ค้างไว้ได้ ตัวอย่างเช่นสมมติว่าภารกิจปัจจุบัน (ภารกิจ A) มีสามกิจกรรมในสแต็ก - สองภายใต้กิจกรรมปัจจุบัน ผู้ใช้กดปุ่ม HOME จากนั้นเริ่มแอปพลิเคชันใหม่จากตัวเรียกใช้งานแอปพลิเคชัน เมื่อหน้าจอหลักปรากฏขึ้นภารกิจ A จะเข้าสู่พื้นหลัง เมื่อแอปพลิเคชันใหม่เริ่มต้นขึ้นระบบจะเริ่มงานสำหรับแอปพลิเคชันนั้น (Task B) ด้วยสแต็กของกิจกรรมของตัวเอง หลังจากโต้ตอบกับแอปพลิเคชันนั้นผู้ใช้จะกลับมาที่หน้าแรกอีกครั้งและเลือกแอปพลิเคชั่นที่เริ่มต้นภารกิจ A ตอนนี้ภารกิจ A มาที่เบื้องหน้ากิจกรรมทั้งสามในสแต็กนั้นไม่เป็นอันตราย ณ จุดนี้ผู้ใช้ยังสามารถสลับกลับไปที่ภารกิจ B โดยไปที่หน้าแรกและเลือกไอคอนแอปพลิเคชันที่เริ่มต้นภารกิจนั้น (หรือโดยการกดปุ่มโฮมค้างไว้เพื่อแสดงงานล่าสุดและเลือกหนึ่งงาน) นี่คือตัวอย่างของการทำงานหลายอย่างบน Android ผู้ใช้ยังสามารถสลับกลับไปที่งาน B โดยไปที่บ้านและเลือกไอคอนแอปพลิเคชันที่เริ่มต้นภารกิจนั้น (หรือโดยการกดปุ่ม HOME ค้างไว้เพื่อแสดงงานล่าสุดและเลือกหนึ่งรายการ) นี่คือตัวอย่างของการทำงานหลายอย่างบน Android ผู้ใช้ยังสามารถสลับกลับไปที่งาน B โดยไปที่บ้านและเลือกไอคอนแอปพลิเคชันที่เริ่มต้นภารกิจนั้น (หรือโดยการกดปุ่ม HOME ค้างไว้เพื่อแสดงงานล่าสุดและเลือกหนึ่งรายการ) นี่คือตัวอย่างของการทำงานหลายอย่างบน Android

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

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

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

เอกสารที่ดี (แต่ยัง verbose) อีกอันหนึ่งคือเอกสารที่ครอบคลุมActivity Lifecycle (มีผังงานที่ดีหากคุณเลื่อนลงมาเล็กน้อย)


ดังนั้นพวกเขาจึงถูกฆ่าตายบนพื้นฐานต่องานไม่ใช่พื้นฐานต่อกิจกรรม / กระบวนการ หลังจะช่วยให้การฆ่างานบางส่วนซึ่งอาจไม่พึงประสงค์
jiggunjer

4

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

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


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

ไม่ฉันหมายถึงถูกทำลาย
Flow

เมื่อคุณกดปุ่มโฮมonStopวิธีการที่เรียกว่า กระบวนการที่ถูกฆ่าไม่ได้หมายความว่ากิจกรรมได้รับonDestroyedวิธีการที่เรียกว่าแม้ว่ามันจะคล้ายกันจริง ๆ "การฆ่า" กระบวนการกิจกรรมหมายถึง VM ถูกลบออกจาก RAM สำหรับฉัน (Android ฆ่ามัน) ดูเหมือนว่าจะส่งผลกระทบต่อประสบการณ์ของผู้ใช้
jiggunjer

4

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

ภาวะแทรกซ้อนอื่นคือบางครั้ง Android จะเรียกใช้ฟังก์ชัน onCreate () ของแอปเมื่อคุณคาดหวังให้เรียกใช้ onResume ()

ดังนั้นปัญหาของคุณกับ Air Control (หรือแอพอื่น ๆ ) นั้นเฉพาะเจาะจงกับแอพนั้นและคุณควรรายงานพฤติกรรมให้นักพัฒนาเพื่อทำการแก้ไข แอพส่วนใหญ่มีอีเมลติดต่อใน Market

BTW ถ้าคุณต้องการเข้าใจวงจรชีวิตของแอพฉันแนะนำบทที่ 2 ของ Hello, Android ของ Ed Burnette โดยเฉพาะรูปที่ 2.3


3

ปุ่มโฮมกดเมื่ออยู่ในแอพ:

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

ปุ่มโฮมกดเมื่ออยู่บนหน้าจอโฮม:

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

สิ่งที่เพื่อนของคุณอาจกังวล:

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

แอปพลิเคชั่นบางตัวจะยังคงทำงานเป็นแอปพลิเคชั่นพื้นหลังต่อไปดังนั้นการกดปุ่มโฮมจะไม่ฆ่าพวกเขา (เช่น Google Play Music จะยังคงเล่นหลังจากกดปุ่มโฮม)

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

คุณและเพื่อนของคุณควรกังวลกับจอแสดงผลมากขึ้นซึ่งใช้พลังงานมากที่สุด

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