Android 9 (API ระดับ 28) ขึ้นไปรองรับกลุ่มแอปที่รอดำเนินการ สแตนด์บายแอป ที่เก็บข้อมูลช่วยให้ระบบจัดลำดับความสำคัญของแอปได้ ทรัพยากรตามวิธี ล่าสุดและความถี่ในการใช้แอป แต่ละรายการตามรูปแบบการใช้งานแอป แอปอยู่ใน 1 จาก 5 ที่เก็บข้อมูลที่มีลำดับความสำคัญ ระบบจะจำกัดทรัพยากรของอุปกรณ์ที่พร้อมใช้งานสำหรับแต่ละแอปตามที่เก็บข้อมูลของแอป
ที่เก็บข้อมูลสำคัญ
ระบบจะกำหนดแต่ละแอปไปยังที่เก็บข้อมูลลำดับความสำคัญแบบไดนามิก โดยกำหนด แอปที่จำเป็น ระบบอาจใช้แอปที่โหลดไว้ล่วงหน้าซึ่งใช้แมชชีนเลิร์นนิงเพื่อพิจารณาความเป็นไปได้ที่แต่ละแอปจะได้รับการใช้งาน และกำหนดแอปไปยังที่เก็บที่เหมาะสม
หากไม่มีแอประบบในอุปกรณ์ ระบบจะจัดเรียงแอปตามลำดับล่าสุดที่ใช้โดยค่าเริ่มต้น แอปที่ใช้งานอยู่มากกว่าจะได้รับมอบหมายให้อยู่ในที่เก็บข้อมูลที่มีลำดับความสำคัญสูงกว่า ซึ่งจะทำให้แอปมีทรัพยากรระบบมากขึ้น โดยเฉพาะอย่างยิ่ง ที่เก็บข้อมูลจะกำหนดความถี่ที่งานของแอปทำงานและความถี่ที่แอปจะทริกเกอร์การแจ้งเตือนได้ ข้อจำกัดเหล่านี้จะมีผลเฉพาะเมื่ออุปกรณ์ใช้พลังงานแบตเตอรี่เท่านั้น ขณะที่อุปกรณ์ชาร์จอยู่ ระบบจะไม่กำหนดข้อจำกัดเหล่านี้
กลุ่มอัตราราคาตามลําดับความสําคัญมีดังนี้
- ใช้งานอยู่: มีการใช้แอปหรือเพิ่งใช้งานแอปเมื่อเร็วๆ นี้
- ชุดที่ทำงานอยู่: แอปมีการใช้งานอยู่เป็นประจำ
- บ่อย: มีการใช้แอปอยู่บ่อยครั้ง ไม่ใช่ทุกวัน
- พบได้ยาก: มีการใช้งานแอปไม่บ่อยนัก
- ถูกจํากัด: แอปใช้ทรัพยากรของระบบจํานวนมากหรืออาจแสดงลักษณะการทำงานที่ไม่พึงประสงค์
นอกจากที่เก็บข้อมูลลำดับความสำคัญเหล่านี้แล้ว ยังมีที่เก็บข้อมูลพิเศษสำหรับที่ แอปที่ติดตั้งแต่ไม่เคยทำงาน ระบบจะจำกัดแอปเหล่านี้อย่างเข้มงวด
คำอธิบายต่อไปนี้มีไว้สำหรับกรณีที่ไม่ได้คาดการณ์ไว้ ในทางตรงกันข้าม เมื่อ การคาดคะเนจะใช้แมชชีนเลิร์นนิงในการคาดการณ์พฤติกรรม และเลือกที่เก็บข้อมูลใน การคาดการณ์ถึงการดำเนินการต่อไปของผู้ใช้ มากกว่าที่จะอิงจากการใช้งานล่าสุด สำหรับ ตัวอย่างเช่น แอปที่ใช้ล่าสุดอาจไปอยู่ในที่เก็บข้อมูลที่ไม่พบบ่อยเนื่องจาก การเรียนรู้คาดการณ์ว่าอาจไม่ได้ใช้งานแอปเป็นเวลาหลายชั่วโมง
ใช้งานอยู่
แอปจะอยู่ในกลุ่มใช้งานอยู่ขณะที่มีการใช้งาน เพิ่งมีการใช้งาน หรือเมื่อทําสิ่งต่อไปนี้
- เปิดใช้งานกิจกรรม
- เรียกใช้บริการที่ทำงานอยู่เบื้องหน้าซึ่งใช้เวลานาน
- ผู้ใช้แตะจากข้อความแจ้ง
หากแอปอยู่ในที่เก็บข้อมูล "ทำงานอยู่" ระบบจะไม่จำกัดงานหรือการแจ้งเตือนของแอป
การโต้ตอบของผู้ใช้กำหนดให้แอปทำงาน
ใน Android 9 (API ระดับ 28) ขึ้นไป เมื่อผู้ใช้โต้ตอบกับแอปของคุณใน ระบบจะวางแอปของคุณลงในที่เก็บข้อมูลที่ใช้งานอยู่ชั่วคราว หลังจากที่ผู้ใช้หยุดโต้ตอบกับแอป ระบบจะจัดแอปนั้นไว้ในที่เก็บข้อมูลตามประวัติการใช้งาน
ต่อไปนี้เป็นตัวอย่างของการโต้ตอบที่ทริกเกอร์ลักษณะการทํางานของระบบนี้
ผู้ใช้แตะการแจ้งเตือนที่แอปของคุณส่ง
ผู้ใช้โต้ตอบกับบริการที่ทำงานอยู่เบื้องหน้าในแอปโดยแตะสื่อ
ผู้ใช้เชื่อมต่อกับแอปของคุณขณะโต้ตอบกับ Android Automotive ระบบปฏิบัติการ ที่แอปใช้บริการที่ทำงานอยู่เบื้องหน้าหรือ
CONNECTION_TYPE_PROJECTION
ชุดทำงาน
แอปจะอยู่ในที่เก็บข้อมูลชุดที่ทำงานอยู่หากทำงานบ่อยแต่ไม่ได้ใช้งาน ตัวอย่างเช่น แอปโซเชียลมีเดียที่ผู้ใช้เปิดเกือบทุกวันมีแนวโน้มที่จะอยู่ในชุดที่ทำงาน นอกจากนี้ ระบบจะโปรโมตแอปไปยังที่เก็บชุดทำงานด้วยหากมีการใช้งานแอปดังกล่าวโดยอ้อม
หากแอปอยู่ในชุดการทำงาน ระบบจะกำหนดข้อจำกัดเล็กน้อยในแอปดังกล่าว ความสามารถในการเรียกใช้งานและทริกเกอร์การปลุก โปรดดูรายละเอียดที่หัวข้อการจัดการพลังงาน ข้อจำกัด
ติดต่อบ่อย
แอปจะอยู่ในกลุ่มบ่อยหากมีการใช้งานเป็นประจำ แต่ไม่จำเป็นต้องใช้ทุกวัน ตัวอย่างเช่น แอปติดตามการออกกำลังกายที่ผู้ใช้เรียกใช้ที่โรงยิม อาจอยู่ในส่วนที่พูดถึงบ่อย
หากแอปอยู่ในที่เก็บข้อมูล "บ่อย" ระบบจะจำกัดความสามารถในการเรียกใช้งานและทริกเกอร์การแจ้งเตือนของแอปนั้นๆ มากขึ้น โปรดดูรายละเอียดที่หัวข้อข้อจำกัดด้านการจัดการพลังงาน
พบน้อย
แอปจะอยู่ในกลุ่มนานๆ ครั้งหากไม่ได้ใช้งานบ่อย เช่น โรงแรม ที่ผู้ใช้เรียกใช้เฉพาะขณะเข้าพักที่โรงแรมนั้นอาจเป็น
หากแอปอยู่ในที่เก็บข้อมูลที่พบไม่บ่อย ระบบจะกำหนดข้อจำกัดที่เข้มงวด ความสามารถในการเรียกใช้งานและทริกเกอร์การปลุก ระบบยังจำกัดความสามารถของแอปด้วย เพื่อเชื่อมต่ออินเทอร์เน็ต โปรดดูรายละเอียดที่หัวข้อการจัดการพลังงาน ข้อจำกัด
จำกัด
ที่เก็บข้อมูลนี้เพิ่มเข้ามาใน Android 12 (API ระดับ 31) มีลําดับความสําคัญต่ำที่สุดและข้อจํากัดสูงสุดในบรรดาที่เก็บข้อมูลทั้งหมด ระบบจะพิจารณาลักษณะการทํางานของแอป เช่น ความถี่ที่ผู้ใช้โต้ตอบกับแอป เพื่อตัดสินใจว่าจะนําแอปของคุณไปไว้ในที่เก็บข้อมูลที่ถูกจํากัดหรือไม่
ใน Android 13 (API ระดับ 33) ขึ้นไป ระบบจะจัดให้แอปของคุณอยู่ในที่เก็บข้อมูลที่ถูกจํากัดในกรณีต่อไปนี้ เว้นแต่แอปจะมีสิทธิ์ได้รับการยกเว้น
ผู้ใช้ไม่ได้โต้ตอบกับแอปเป็นจํานวนวันที่เจาะจง ใน Android 12 (API ระดับ 31) และ 12L (API ระดับ 32) จำนวนวันคือ 45 วัน Android 13 จะลดจำนวนวันเหลือ 8
แอปของคุณเรียกใช้การออกอากาศหรือการเชื่อมโยงมากเกินไปในช่วง 24 ชั่วโมง
หากระบบวางแอปของคุณในที่เก็บข้อมูลที่ถูกจำกัด สิ่งต่อไปนี้จะเกิดขึ้น มีข้อจำกัด:
- คุณสามารถเรียกใช้งานได้วันละครั้งในเซสชันแบบเป็นกลุ่มนาน 10 นาที ในระหว่างเซสชันนี้ ระบบจะจัดกลุ่มงานของแอปคุณไว้กับงานของแอปอื่นๆ
- งานที่ถูกจํากัดจะไม่ทํางานเอง ต้องมีงานที่รอดําเนินการหรือดําเนินการอยู่อย่างน้อย 1 รายการพร้อมกัน ซึ่งอาจรวมถึงงานอื่นๆ
- แอปของคุณเรียกใช้งานที่ต้องเร่งได้น้อยกว่าเมื่อเทียบกับตอนที่ระบบ วางแอปของคุณในที่เก็บข้อมูลที่มีข้อจำกัดน้อยกว่า
- แอปของคุณเรียกใช้การปลุกได้วันละ 1 ครั้ง การแจ้งเตือนนี้อาจเป็นการแจ้งเตือนที่แน่นอนหรือการแจ้งเตือนที่ไม่แน่นอนก็ได้
การยกเว้นจากที่เก็บข้อมูลที่ถูกจำกัด
แอปประเภทต่อไปนี้จะได้รับการยกเว้นไม่ให้เข้าสู่ที่เก็บข้อมูลที่ถูกจํากัดและหลีกเลี่ยงทริกเกอร์ "ไม่มีการใช้งาน" แม้ว่าจะใช้ Android 12 ขึ้นไปก็ตาม
- แอปอุปกรณ์ที่ใช้ร่วมกัน
- แอปที่กำลังทำงานบนอุปกรณ์ในโหมดสาธิต
- แอปของเจ้าของอุปกรณ์
- แอปเจ้าของโปรไฟล์
- แอปถาวร
- แอป VPN
- แอปที่มีบทบาท
ROLE_DIALER
- แอปที่ผู้ใช้ระบุไว้อย่างชัดแจ้งว่าให้บริการแบบ "ไม่จำกัด" ฟังก์ชันการทำงานในการตั้งค่าระบบ
- แอปที่มีวิดเจ็ตที่ใช้งานอยู่
- แอปที่ได้รับสิทธิ์ต่อไปนี้อย่างน้อย 1 สิทธิ์
ประเมินที่เก็บข้อมูลลําดับความสําคัญ
หากต้องการตรวจสอบที่เก็บข้อมูลของแอป ให้ทําอย่างใดอย่างหนึ่งต่อไปนี้
เรียกใช้คำสั่งต่อไปนี้ในหน้าต่างเทอร์มินัล
adb shell am get-standby-bucket PACKAGE_NAME
ระบบจะควบคุมแอปของคุณเมื่อใดก็ตามที่วางอยู่ในที่เก็บข้อมูลสแตนด์บายแอป
ที่มีค่ามากกว่า STANDBY_BUCKET_ACTIVE
(10)
แนวทางปฏิบัติแนะนำ
หากแอปของคุณปฏิบัติตามแนวทางปฏิบัติแนะนำสำหรับ Doze และสแตนด์บายแอปแล้ว คุณลักษณะการจัดการพลังงานในภายหลังได้จึงไม่ใช่เรื่องยาก อย่างไรก็ตาม ลักษณะการทำงานบางอย่างของแอป ซึ่งก่อนหน้านี้ใช้การได้ดีอยู่แล้วอาจทำให้เกิดปัญหา
- อย่าพยายามควบคุมระบบเพื่อทำให้แอปของคุณ วิธีการจัดลําดับความสําคัญของระบบอาจเปลี่ยนแปลงได้ และผู้ผลิตอุปกรณ์ทุกรายอาจเลือกเขียนแอปการแบ่งกลุ่มของตนเองด้วยอัลกอริทึมของแอปเอง คุณควรตรวจสอบให้แน่ใจว่าแอปของคุณทำงานอย่างเหมาะสม ที่เก็บข้อมูลไว้
- หากแอปไม่มีกิจกรรม Launcher ก็อาจไม่ได้รับการโปรโมต ที่เก็บข้อมูลที่ใช้งานอยู่ ลองออกแบบแอปใหม่ให้มีกิจกรรมดังกล่าว
หากผู้ใช้โต้ตอบกับการแจ้งเตือนของแอปไม่ได้ ผู้ใช้จะเรียกให้ระบบโปรโมตแอปไปยังกลุ่มที่ใช้งานอยู่ไม่ได้ ในกรณีนี้ ให้ลองออกแบบการแจ้งเตือนบางอย่างใหม่เพื่อให้ผู้ใช้โต้ตอบได้ ดูหลักเกณฑ์บางส่วนได้ที่รูปแบบการออกแบบการแจ้งเตือนของ Material Design
หากแอปไม่ได้แสดงการแจ้งเตือนเมื่อได้รับลำดับความสำคัญสูง ข้อความ Firebase Cloud Messaging (FCM) ที่ผู้ใช้โต้ตอบด้วยไม่ได้ และโปรโมตแอปนั้นไปยังที่เก็บข้อมูลที่ใช้งานอยู่ อันที่จริงแล้ว การใช้ข้อความ FCM ที่มีลำดับความสำคัญสูงมีไว้เพื่อส่งการแจ้งเตือนไปยังผู้ใช้เท่านั้น ดังนั้นสถานการณ์นี้จึงไม่ควรเกิดขึ้น ใน 12L (API ระดับ 32) และต่ำกว่า หากทำเครื่องหมายข้อความ FCM เป็นสำคัญสูงอย่างไม่เหมาะสมเมื่อข้อความไม่ได้ทริกเกอร์การโต้ตอบของผู้ใช้ อาจทำให้ระบบลดลำดับความสำคัญของข้อความในอนาคต
หากแอปแยกออกเป็นหลายแพ็กเกจ แพ็กเกจเหล่านั้นอาจอยู่ในที่เก็บข้อมูลที่แตกต่างกันและมีระดับการเข้าถึงที่แตกต่างกัน ทดสอบแอปเหล่านี้ด้วย แพ็กเกจที่กำหนดให้กับที่เก็บข้อมูลต่างๆ เพื่อตรวจสอบว่าแอปทำงานอย่างถูกต้อง