เมื่อผู้ใช้ปล่อยให้อุปกรณ์ที่ใช้ Android อยู่เฉยๆ อุปกรณ์จะเข้าสู่ สถานะพักอย่างรวดเร็วเพื่อไม่ให้แบตเตอรี่หมด อย่างไรก็ตาม บางครั้งแอปอาจต้องป้องกันไม่ให้ CPU เข้าสู่สถานะระงับ ในบางกรณี แอปอาจต้องเปิดหน้าจอไว้ขณะทำงาน ในกรณีอื่นๆ แอป ไม่จำเป็นต้องเปิดหน้าจอไว้ แต่ยังคงต้องให้ CPU ทำงานอยู่
แนวทางที่คุณเลือกจะขึ้นอยู่กับความต้องการของแอป แต่โดยทั่วไปแล้ว คุณควรใช้วิธีที่เบาที่สุดเท่าที่จะเป็นไปได้ เพื่อลดผลกระทบของแอป ต่อทรัพยากรของระบบ เอกสารนี้จะช่วยคุณเลือกเทคโนโลยี Android ที่ถูกต้องสำหรับสถานการณ์ของคุณ
เลือกเทคโนโลยีที่เหมาะสม
ตัวเลือกที่ดีที่สุดในการทำให้อุปกรณ์ตื่นอยู่จะขึ้นอยู่กับความต้องการของแอป ส่วนนี้จะช่วยคุณเลือกแนวทางที่เหมาะสม
- แอปของคุณจำเป็นต้องเปิดหน้าจอไว้ไหม
- หากตอบว่าใช่ ให้ดูเปิดหน้าจอไว้ อาจมี API เฉพาะที่ทำสิ่งที่คุณต้องการ ตัวอย่างเช่น หากคุณ
ใช้ UI การโทร คุณสามารถใช้เฟรมเวิร์กโทรคมนาคมของ Android ซึ่งจะเปิดหน้าจอไว้เมื่อจำเป็น หากไม่มี
API ที่มีวัตถุประสงค์พิเศษสำหรับสถานการณ์ของคุณ คุณสามารถใช้
keepScreenOn
API ได้
- หากตอบว่าใช่ ให้ดูเปิดหน้าจอไว้ อาจมี API เฉพาะที่ทำสิ่งที่คุณต้องการ ตัวอย่างเช่น หากคุณ
ใช้ UI การโทร คุณสามารถใช้เฟรมเวิร์กโทรคมนาคมของ Android ซึ่งจะเปิดหน้าจอไว้เมื่อจำเป็น หากไม่มี
API ที่มีวัตถุประสงค์พิเศษสำหรับสถานการณ์ของคุณ คุณสามารถใช้
- แอปของคุณกำลังเรียกใช้บริการที่ทำงานอยู่เบื้องหน้า และคุณต้องการให้อุปกรณ์
ตื่นอยู่เมื่อหน้าจอปิดขณะที่บริการกำลังทำงานใช่ไหม
- หากเลือกไม่ คุณไม่จำเป็นต้องปลุกให้อุปกรณ์ตื่นอยู่เสมอ หากผู้ใช้ โต้ตอบกับแอปอยู่ อุปกรณ์จะยังคงทำงานอยู่ หาก ผู้ใช้ไม่ได้โต้ตอบกับแอปและคุณไม่ได้เรียกใช้ บริการที่ทำงานอยู่เบื้องหน้า คุณควรปล่อยให้อุปกรณ์เข้าสู่โหมดระงับเมื่อ จำเป็น หากคุณเพียงต้องการให้แน่ใจว่างานบางอย่างจะเสร็จสิ้นในขณะที่ผู้ใช้ไม่ได้อยู่ในแอป โปรดดูเอกสารประกอบงานในเบื้องหลัง เพื่อค้นหาตัวเลือกที่ดีที่สุด
- หากตอบว่าใช่ ให้ยืนยันก่อนว่าคุณจำเป็นต้องใช้ Foreground
Service จริงๆ ในบางสถานการณ์ อาจมี API ที่มีวัตถุประสงค์พิเศษ
ที่คุณใช้เพื่อตอบสนองความต้องการแทนบริการที่ทำงานอยู่เบื้องหน้าได้
ดูข้อมูลเกี่ยวกับบริการที่ทำงานอยู่เบื้องหน้าได้ เช่น หากต้องการติดตามตำแหน่งของผู้ใช้ คุณอาจใช้ Geofencing API แทน
location
บริการที่ทำงานอยู่เบื้องหน้าได้
- การระงับอุปกรณ์ขณะที่บริการที่ทำงานอยู่เบื้องหน้าทำงานและหน้าจออุปกรณ์ปิดอยู่จะส่งผลเสียต่อประสบการณ์ของผู้ใช้ไหม (เช่น หากคุณใช้บริการที่ทำงานอยู่เบื้องหน้าเพื่ออัปเดตการแจ้งเตือน ก็จะไม่ถือว่าเป็นประสบการณ์ของผู้ใช้ที่ไม่ดีหากระบบระงับอุปกรณ์)
- หากเป็น No อย่าใช้ Wake Lock การดำเนินการจะกลับมาทำงานต่อ โดยอัตโนมัติเมื่อผู้ใช้มีส่วนร่วมกับอุปกรณ์ ซึ่งจะทำให้อุปกรณ์ ออกจากสถานะระงับ
- หากตอบว่าใช่ คุณอาจต้องใช้ Wake Lock อย่างไรก็ตาม คุณยังคงควรตรวจสอบว่าคุณใช้ API อยู่แล้วหรือดำเนินการที่ประกาศ Wake Lock ในนามของคุณหรือไม่ ตามที่อธิบายไว้ในการดำเนินการที่ทำให้อุปกรณ์ตื่นอยู่
การดำเนินการที่ทำให้อุปกรณ์ตื่นอยู่เสมอ
หากแอปของคุณทำสิ่งใดสิ่งหนึ่งต่อไปนี้ คุณไม่จำเป็นต้องตั้งค่า Wake Lock ด้วยตนเอง การดำเนินการและ API ต่อไปนี้จะทำให้อุปกรณ์ตื่นอยู่เสมอ
- หากคุณกำลังเล่นเสียง ระบบเสียงจะตั้งค่าและจัดการ Wake Lock ให้คุณ คุณจึงไม่จำเป็นต้องดำเนินการด้วยตนเอง
- หากคุณใช้ API หรือไลบรารีการตั้งเวลาการทำงาน เช่น WorkManager,
JobScheduler
หรือDownloadManager
ระบบหรือไลบรารีจะรับ การทำงานขณะล็อกที่เชื่อมโยงกับแอปของคุณ - หากใช้ Media3 ExoPlayer คุณจะใช้
ExoPlayer.setWakeMode()
เพื่อให้เพลเยอร์ตั้งค่า Wake Lock ให้ได้ - เซ็นเซอร์บางอย่างของอุปกรณ์เป็นเซ็นเซอร์ปลุก คุณสามารถใช้
SensorManager
เพื่อกำหนดให้เซ็นเซอร์เหล่านั้นปลุกอุปกรณ์เมื่อมีข้อมูลที่จะรายงาน หากต้องการตรวจสอบว่าเซ็นเซอร์เป็นเซ็นเซอร์ปลุกหรือไม่ ให้เรียกใช้Sensor.isWakeUpSensor
- หากตั้งเวลาปลุก อุปกรณ์จะปลุกเมื่อนาฬิกาปลุกดังขึ้น แม้ว่าแอปจะไม่ได้ทำงานอยู่ก็ตาม