Android 9 (API ระดับ 28) เปิดตัวฟีเจอร์ใหม่ๆ เพื่อปรับปรุงการจัดการพลังงานของอุปกรณ์ การเปลี่ยนแปลงเหล่านี้รวมถึงฟีเจอร์ที่มีอยู่แล้วในเวอร์ชันก่อนหน้าจะช่วยให้มั่นใจได้ว่าระบบจะจัดสรรทรัพยากรให้กับแอปที่ต้องการมากที่สุด
ฟีเจอร์การจัดการพลังงานแบ่งออกเป็น 2 หมวดหมู่ดังนี้
- ที่เก็บข้อมูลสแตนด์บายแอป
- ระบบจะจำกัดการเข้าถึงทรัพยากรของอุปกรณ์ เช่น CPU หรือแบตเตอรี่ ของแอปตามรูปแบบการใช้งานของผู้ใช้ ฟีเจอร์นี้เป็นฟีเจอร์ใหม่สำหรับ Android 9
- การปรับปรุงโหมดประหยัดแบตเตอรี่
- เมื่อเปิดโหมดประหยัดแบตเตอรี่ ระบบจำกัดแอปทั้งหมด ซึ่งเป็นฟีเจอร์ที่มีอยู่แล้วที่ ที่ปรับปรุงให้ดียิ่งขึ้นด้วย Android 9
ที่เก็บข้อมูลสแตนด์บายแอป
Android 9 เปิดตัวฟีเจอร์การจัดการแบตเตอรี่ใหม่ที่เรียกว่ากลุ่มแอปที่รอดำเนินการ ที่เก็บข้อมูลสแตนด์บายแอปช่วยให้ระบบจัดลำดับความสำคัญของแอป คำขอทรัพยากรตาม เกี่ยวกับความใหม่และความถี่ในการใช้แอป ระบบจะจัดแอปแต่ละแอปไว้ในกลุ่มลำดับความสำคัญ 1 ใน 5 กลุ่มตามรูปแบบการใช้งานแอป ระบบจะจำกัดทรัพยากรของอุปกรณ์ที่ใช้ได้กับแต่ละแอปตามที่เก็บข้อมูลของแอป
ที่เก็บข้อมูล 5 รายการจะจัดลําดับความสําคัญของแอปออกเป็นกลุ่มๆ ตามลักษณะต่อไปนี้
- ใช้งานอยู่
แอปอยู่ในที่เก็บข้อมูลที่ใช้งานอยู่หากผู้ใช้กำลังใช้แอปสำหรับ ตัวอย่าง:
- แอปเปิดใช้งานกิจกรรม
- แอปกำลังใช้บริการที่ทำงานอยู่เบื้องหน้า
- แอปมีอะแดปเตอร์การซิงค์ที่เชื่อมโยงกับผู้ให้บริการเนื้อหาที่แอปที่ทำงานอยู่เบื้องหน้าใช้
- ผู้ใช้คลิกการแจ้งเตือนจากแอป
หากแอปอยู่ในที่เก็บข้อมูล "ทำงานอยู่" ระบบจะไม่จำกัดงาน การแจ้งเตือน หรือข้อความ FCM ของแอป
- ชุดทำงาน
แอปอยู่ในที่เก็บข้อมูลชุดที่ใช้งานได้หากทํางานบ่อย แต่ขณะนี้ไม่ได้ใช้งานอยู่ ใช้งานอยู่ เช่น แอปโซเชียลมีเดียที่ผู้ใช้เปิดบ่อยที่สุดคือ ที่จะอยู่ในกองถ่าย แอปจะได้รับการโปรโมตเป็นชุดการทำงาน หากใช้โดยอ้อม
หากแอปอยู่ในชุดที่ทำงานอยู่ ระบบจะจำกัดความสามารถในการเรียกใช้งานและทริกเกอร์การแจ้งเตือนของแอปนั้นในระดับปานกลาง โปรดดูรายละเอียดที่หัวข้อข้อจำกัดการจัดการพลังงาน
- ติดต่อบ่อย
แอปจะอยู่ในกลุ่ม "บ่อย" หากมีการใช้งานเป็นประจำ แต่ไม่จำเป็นต้องเป็นการใช้งานทุกวัน เช่น แอปติดตามการออกกำลังกายที่ผู้ใช้เปิดใช้งานที่โรงยิมอาจอยู่ในกลุ่มที่ใช้งานบ่อย
หากแอปอยู่ในที่เก็บข้อมูลที่ใช้บ่อย ระบบจะกำหนดข้อจำกัดที่เข้มงวดขึ้น ความสามารถในการเรียกใช้งานและการปลุก รวมถึงการกำหนดขีดจำกัด ข้อความ FCM ที่มีลำดับความสำคัญสูง โปรดดูรายละเอียดที่หัวข้อ ข้อจำกัดการจัดการพลังงาน
- พบน้อย
แอปจะอยู่ในที่เก็บข้อมูลที่ไม่ค่อยเกิดขึ้นหากไม่ได้ใช้งานบ่อย เช่น แอปโรงแรมที่ผู้ใช้เรียกใช้เฉพาะขณะที่อาศัยอยู่ในโรงแรมนั้นๆ อาจอยู่ในที่เก็บข้อมูล "น้อยมาก"
หากแอปอยู่ในที่เก็บข้อมูลระดับ Rare ระบบจะจำกัดความสามารถในการเรียกใช้งาน ทริกเกอร์การแจ้งเตือน และรับข้อความ FCM ที่มีลำดับความสำคัญสูงอย่างเข้มงวด นอกจากนี้ ระบบยังจำกัดความสามารถในการเชื่อมต่ออินเทอร์เน็ตของแอปด้วย สำหรับ โปรดดูรายละเอียดที่หัวข้อข้อจำกัดการจัดการพลังงาน
- ไม่ต้อง
แอปที่ติดตั้งแล้วแต่ไม่เคยเรียกใช้จะได้รับมอบหมายให้อยู่ในที่เก็บข้อมูล "ไม่เคย" ระบบจะจำกัดแอปเหล่านี้อย่างเข้มงวด
ระบบจะกำหนดแต่ละแอปไปยังที่เก็บข้อมูลลำดับความสำคัญแบบไดนามิก และกำหนด แอปที่จำเป็น ระบบอาจใช้แอปที่โหลดไว้ล่วงหน้าซึ่งใช้เครื่อง เพื่อดูว่าแต่ละกลุ่มเป้าหมาย และกำหนดแอปให้กับที่เก็บข้อมูลที่เหมาะสม หากระบบ แอปไม่ได้อยู่ในอุปกรณ์ ระบบจะใช้ค่าเริ่มต้นในการจัดเรียงแอปโดยอิงตาม เวลาการใช้งานล่าสุด ระบบกำหนดแอปที่ใช้งานอยู่เพิ่มเติมให้กับที่เก็บข้อมูลที่ ให้แอปมีลำดับความสำคัญสูงกว่า มีทรัพยากรระบบที่แอปมี โดยเฉพาะอย่างยิ่ง ที่เก็บข้อมูล กำหนดความถี่ในการเรียกใช้งานของแอป ความถี่ที่แอปจะทริกเกอร์ได้ การปลุก และความถี่ตามที่แอปสามารถรับ Firebase Cloud ที่มีลำดับความสำคัญสูงได้ การรับส่งข้อความ (FCM) ข้อจำกัดเหล่านี้จะมีผลเฉพาะในขณะที่อุปกรณ์ใช้แบตเตอรี่เท่านั้น ระบบจะไม่จำกัดแอปเหล่านี้ขณะที่อุปกรณ์ชาร์จอยู่
ผู้ผลิตทุกรายสามารถกำหนดเกณฑ์ของตนเองสำหรับวิธีกำหนดแอปที่ไม่ใช้งานไปยังกลุ่ม คุณไม่ควรพยายามกำหนดกลุ่มที่ระบบจะกำหนดแอปของคุณ แต่ให้มุ่งเน้นที่การทำให้แอปทำงานได้อย่างถูกต้องไม่ว่าแอปจะอยู่ในกลุ่มใดก็ตาม แอปจะค้นหาที่เก็บข้อมูลที่แอปอยู่ในตอนนี้ได้โดย
การเรียกเมธอดใหม่
UsageStatsManager.getAppStandbyBucket()
แนวทางปฏิบัติแนะนำ
หากแอปของคุณเป็นไปตามแนวทางปฏิบัติแนะนำสำหรับโหมดสลีปและโหมดรอของแอปอยู่แล้ว การจัดการฟีเจอร์การจัดการพลังงานใหม่ก็ไม่ใช่เรื่องยาก อย่างไรก็ตาม ลักษณะการทํางานบางอย่างของแอปที่ก่อนหน้านี้ทํางานได้ดีอาจก่อให้เกิดปัญหาในตอนนี้
- อย่าพยายามจัดการระบบเพื่อใส่แอปลงในที่เก็บข้อมูลเดียว หรือ อีกรายการ วิธีการแบ่งกลุ่มของระบบอาจเปลี่ยนแปลงได้ และผู้ผลิตอุปกรณ์ทุกรายสามารถเลือกเขียนแอปการจัดกลุ่มของตนเองด้วยอัลกอริทึมของแอปนั้น คุณควรตรวจสอบให้แน่ใจว่าแอปของคุณทำงานอย่างเหมาะสม ที่เก็บข้อมูลไว้
- หากแอปไม่มีกิจกรรมใน Launcher แอปอาจไม่ได้รับการโปรโมตไปยังกลุ่มที่ใช้งานอยู่ คุณอาจต้องออกแบบแอปใหม่ให้มีกิจกรรมดังกล่าว
- หากการแจ้งเตือนของแอปไม่สามารถดำเนินการได้ ผู้ใช้จะไม่สามารถเรียกให้ระบบโปรโมตแอปไปยังกลุ่มที่ใช้งานอยู่โดยการโต้ตอบกับการแจ้งเตือน ในกรณีนี้ คุณอาจต้องออกแบบการแจ้งเตือนที่เหมาะสมใหม่เพื่อให้ผู้ใช้ตอบกลับได้ ดูหลักเกณฑ์บางส่วนได้ที่รูปแบบการออกแบบการแจ้งเตือนของ Material Design
ในทํานองเดียวกัน หากแอปไม่แสดงการแจ้งเตือนเมื่อได้รับข้อความ FCM ที่มีความสําคัญสูง ก็จะไม่เปิดโอกาสให้ผู้ใช้โต้ตอบกับแอป และระบบจะไม่โปรโมตแอปดังกล่าวไปยังกลุ่มที่ใช้งานอยู่ อันที่จริงแล้ว จุดประสงค์เดียวที่จะใช้สำหรับข้อความ FCM ที่มีลำดับความสำคัญสูงคือการ ส่งการแจ้งเตือนไปยังผู้ใช้ สถานการณ์นี้จึงไม่ควรเกิดขึ้น หากคุณ ทำเครื่องหมายข้อความ FCM ว่ามีลำดับความสำคัญสูงอย่างไม่เหมาะสมเมื่อไม่ทริกเกอร์ การโต้ตอบของผู้ใช้ อาจทำให้เกิดผลเสียอื่นๆ ตามมา เช่น อาจทำให้แอปของคุณใช้โควต้าจนหมด ซึ่งทำให้เกิดความเร่งด่วนจริงๆ ข้อความ FCM จะได้รับการดำเนินการตามลำดับความสำคัญปกติ
หมายเหตุ: หากผู้ใช้ปิดการแจ้งเตือนซ้ำๆ ระบบจะแสดงตัวเลือกให้ผู้ใช้บล็อกการแจ้งเตือนนั้นในอนาคต ไม่ส่งสแปมให้ผู้ใช้ด้วยการแจ้งเตือนเพียงเพื่อพยายามให้แอปของคุณอยู่ในสภาพแวดล้อม ที่เก็บข้อมูลที่ใช้งานอยู่
หากแยกแอปออกเป็นหลายแพ็กเกจ แพ็กเกจเหล่านั้นอาจอยู่ใน ที่เก็บข้อมูลที่ต่างกัน จึงมีระดับการเข้าถึงที่ต่างกัน คุณควรตรวจสอบว่า ด้วยแพ็กเกจที่กำหนดให้กับที่เก็บข้อมูลหลากหลายแห่งเพื่อให้แน่ใจว่า ทำงานได้อย่างถูกต้อง
ปรับปรุงโหมดประหยัดแบตเตอรี่
Android 9 มีการปรับปรุงโหมดประหยัดแบตเตอรี่หลายอย่าง ผู้ผลิตอุปกรณ์จะกำหนดข้อจำกัดที่แน่นอนที่กำหนดไว้ ตัวอย่างเช่น บน บิลด์ AOSP ระบบใช้ข้อจำกัดต่อไปนี้
- ระบบจะกำหนดให้แอปอยู่ในโหมดสแตนด์บายแอปอย่างเข้มงวดมากขึ้น แทนที่จะ กำลังรอให้แอปไม่มีการใช้งาน
- ขีดจํากัดการดําเนินการเบื้องหลังมีผลกับแอปทั้งหมด ไม่ว่าจะมีระดับ API เป้าหมายใดก็ตาม
- บริการตำแหน่งอาจปิดอยู่เมื่อหน้าจอปิดอยู่
- แอปที่ทำงานอยู่เบื้องหลังจะไม่มีสิทธิ์เข้าถึงเครือข่าย
นอกจากนี้ยังมีการเพิ่มประสิทธิภาพอื่นๆ สำหรับอุปกรณ์โดยเฉพาะ สำหรับแบบเต็ม โปรดดูหน้าที่อธิบายการจัดการพลังงาน ข้อจำกัด
และเช่นเคย ควรทดสอบแอปขณะที่โหมดประหยัดแบตเตอรี่ทำงานอยู่ คุณ สามารถเปิดโหมดประหยัดแบตเตอรี่ด้วยตนเองได้ผ่านการตั้งค่า > ของอุปกรณ์ แบตเตอรี่ หน้าจอประหยัดอินเทอร์เน็ต
การทดสอบและการแก้ปัญหา
ฟีเจอร์การจัดการพลังงานแบบใหม่จะส่งผลต่อแอปทั้งหมดที่ทำงานในอุปกรณ์ Android 9 ไม่ว่าจะเป็น หรือแอปที่กำหนดเป้าหมายเป็น Android 9 หรือไม่ คุณจึงต้องตรวจสอบว่าแอปทำงานได้อย่างถูกต้องในอุปกรณ์เหล่านี้
อย่าลืมทดสอบกรณีการใช้งานหลักของแอปภายใต้เงื่อนไขต่างๆ เพื่อดู วิธีที่ฟีเจอร์การจัดการพลังงานทำงานร่วมกัน คุณสามารถใช้คำสั่ง Android Debug Bridge เพื่อเปิดและปิดฟีเจอร์บางอย่างได้
คำสั่งของ Android Debug Bridge
คุณใช้คำสั่ง Shell Android Debug Bridge ได้ เพื่อทดสอบฟีเจอร์การจัดการพลังงานต่างๆ
ดูข้อมูลเกี่ยวกับการใช้ ADB เพื่อทำให้อุปกรณ์เข้าสู่โหมด Doze ได้ที่หัวข้อการทดสอบด้วยโหมด Doze และสแตนด์บายแอป
ที่เก็บข้อมูลสแตนด์บายแอป
คุณสามารถใช้ ADB เพื่อกำหนดแอปให้กับที่เก็บข้อมูลสแตนด์บายแอปด้วยตนเองได้ หากต้องการเปลี่ยนที่เก็บข้อมูลของแอป ให้ใช้คำสั่งต่อไปนี้
$ adb shell am set-standby-bucket packagename active|working_set|frequent|rare
นอกจากนี้ คุณยังใช้คำสั่งดังกล่าวเพื่อตั้งค่าแพ็กเกจหลายแพ็กเกจพร้อมกันได้ด้วย โดยทำดังนี้
$ adb shell am set-standby-bucket package1 bucket1 package2 bucket2...
หากต้องการตรวจสอบว่าแอปอยู่ในที่เก็บข้อมูลใด ให้เรียกใช้
$ adb shell am get-standby-bucket [packagename]
หากไม่ส่งพารามิเตอร์ packagename คำสั่งจะแสดงรายการ
ที่เก็บข้อมูลสำหรับแอปทั้งหมด นอกจากนี้ แอปยังดูที่เก็บข้อมูลของตนขณะรันไทม์ได้โดยเรียกใช้วิธีใหม่ UsageStatsManager.getAppStandbyBucket()
ประหยัดแบตเตอรี่
มีหลายคำสั่งที่ใช้ทดสอบลักษณะการทํางานของแอปในโหมดพลังงานต่ำ
ได้ด้วยหากต้องการจําลองการถอดปลั๊กอุปกรณ์ ให้ใช้คําสั่ง
$ adb shell dumpsys battery unplug
หากต้องการทดสอบลักษณะการทำงานของอุปกรณ์เมื่อใช้พลังงานต่ำ ให้ใช้คำสั่งนี้
$ adb shell settings put global low_power 1
เมื่อทดสอบเสร็จแล้ว คุณจะยกเลิกการตั้งค่าอุปกรณ์ด้วยตนเองได้โดยใช้คำสั่งนี้
$ adb shell dumpsys battery reset