เลือก API ที่ถูกต้องเพื่อเปิดอุปกรณ์ค้างไว้

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

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

เลือกเทคโนโลยีที่เหมาะสม

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

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

  • แอปของคุณจำเป็นต้องเปิดหน้าจอไว้ไหม
    • หากตอบว่าใช่ ให้ดูเปิดหน้าจอไว้ อาจมี API เฉพาะที่ทำสิ่งที่คุณต้องการ ตัวอย่างเช่น หากคุณ ใช้ UI การโทร คุณสามารถใช้เฟรมเวิร์กโทรคมนาคมของ Android ซึ่งจะเปิดหน้าจอไว้เมื่อจำเป็น หากไม่มี API ที่มีวัตถุประสงค์พิเศษสำหรับสถานการณ์ของคุณ คุณสามารถใช้ keepScreenOn 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
  • หากตั้งเวลาปลุก อุปกรณ์จะปลุกเมื่อนาฬิกาปลุกดังขึ้น แม้ว่าแอปจะไม่ได้ทำงานอยู่ก็ตาม

ดูเพิ่มเติม