วิธีที่ถูกต้องในการปิดแอพใน Android คืออะไร?


69

ฉันใหม่สำหรับแพลตฟอร์ม Android และนี่อาจเป็นคำถามที่โง่ แต่ ...

คุณจะปิดแอพได้อย่างไร?

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

มีวิธีออกจากแอพไหม หรือฉันต้องใช้ตัวจัดการงานทุกครั้งที่ออกจากบางสิ่ง


คำตอบ:


48

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

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


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

1
คุณเข้าใจผิดถ้ามันกินแป้งของคุณซึ่งเป็นบริการพื้นหลัง
Nathan Schwermann

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

1
ฉันพบว่าแอพจำนวนมากไม่ออกเมื่อกดปุ่มย้อนกลับ ตัวอย่างเช่น: Pandora, G
Clay Nichols

1
(เวลาแก้ไขของฉันหมดอายุ) .... แอปอื่น ๆ ที่ไม่ได้ปิดปุ่มย้อนกลับ: แพนโดร่า (ซึ่งยังคงเล่นต่อไปหลังจากกด Back), Google Play Store, FaceBook, Podkicker วิธีที่ฉันทดสอบคือการคลิกที่ปุ่มย้อนกลับจนกว่าแอพจะหายไป (โดยปกติจะทำให้ฉันกลับบ้าน) จากนั้นเรียกใช้ Easy Task Killer
Clay Nichols

25

ฉันค่อนข้างแน่ใจว่าทุกอย่างที่ฉันเคยอ่านบอกว่าBackปุ่มเป็นวิธีที่เหมาะสมในการออกจากแอพ

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


3
ถือHomeปุ่มเพียงรายการล่าสุด 6 ปพลิเคชันที่เปิดไม่ได้ทำงานอย่างใดอย่างหนึ่ง

@ Loïc: มันแสดง 8 สำหรับฉัน
เบียร์

1
@LoicWolff, AlEverett มันขึ้นอยู่กับตัวเรียกใช้ในคำถามที่ใช้และ ROM เอง
t0mm13b

ไม่เป็นความจริงเลย กิจกรรมไม่ทำงานในพื้นหลังบน Android
Dan Hulme

12

แอพบางตัวมีตัวเลือก "ออก" ในเมนู ส่วนใหญ่ทำไม่ได้

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

ปรับปรุง : AndroidSpin ได้บางวิจัยโลกแห่งความจริง


Nice link, ty :)
Flow

7

กิจกรรมไม่ทำงานในพื้นหลัง

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

บ้าน

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

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

กลับ

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

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

กระบวนการพื้นหลังที่แคชไว้

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

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

แล้วแอพพื้นหลังล่ะ

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

การออกจากกิจกรรมด้วยการกลับหรือที่บ้านจะไม่เปลี่ยนวิธีที่ Android ปฏิบัติต่อบริการใด ๆ จากแอพเดียวกัน: บริการสามารถทำงานต่อไปหรือถูกเรียกใช้ในภายหลังในเวลาที่กำหนด (ครั้งต่อไปที่การตรวจสอบอีเมลจะครบกำหนด)

สรุป

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


ฉันดีใจที่มีคนพูดถึงเรื่องนี้! ฉันเป็นนักพัฒนา แต่ฉันเคยทำงานให้กับ Verizon Wireless และฉันไม่สามารถบอกคุณได้ว่ามีคนจำนวนมากที่กังวลเกี่ยวกับเรื่องนี้เมื่อไม่จำเป็นต้องมี
Roan

3

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

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

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

แต่ฉันจะไม่แนะนำให้ใช้ task killer ที่ทำงานบนอุปกรณ์ตลอดเวลา


1

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

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

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

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

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

แก้ไข:
มีตัวเลือกในการทำลายแอปพลิเคชันทันทีที่คุณออกจากแอปเช่นเมื่อคุณคลิกปุ่มโฮม คุณสามารถไปที่Settings-> ->Developer Options Don't keep Activitiesแม้ว่าจะเป็นตัวเลือกสำหรับนักพัฒนา แต่ถ้าคุณกังวลเกี่ยวกับแอปที่ทำงานอยู่เบื้องหลังคุณสามารถใช้ตัวเลือกนี้ได้ แต่โปรดทราบว่าไม่แนะนำให้ใช้โดยผู้ที่ไม่ใช่นักพัฒนา

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