ที่เก็บข้อมูลสแตนด์บายแอป

Android 9 (API ระดับ 28) ขึ้นไปรองรับกลุ่มแอปที่รอดำเนินการ สแตนด์บายแอป ที่เก็บข้อมูลช่วยให้ระบบจัดลำดับความสำคัญของคําขอทรัพยากรของแอปตามความใหม่และความถี่ในการใช้แอป ระบบจะจัดแอปแต่ละแอปไว้ในกลุ่มลำดับความสำคัญ 1 ใน 5 กลุ่มตามรูปแบบการใช้งานแอป ระบบจะจำกัดทรัพยากรของอุปกรณ์ที่พร้อมใช้งานสำหรับแต่ละแอปตามที่เก็บข้อมูลของแอป

ที่เก็บข้อมูลลำดับความสำคัญ

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

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

ที่เก็บข้อมูลลำดับความสำคัญมีดังต่อไปนี้

นอกจากกลุ่มที่มีลําดับความสําคัญเหล่านี้แล้ว ยังมีกลุ่มไม่เคยพิเศษสําหรับแอปที่ติดตั้งแต่ไม่เคยเรียกใช้ ระบบจะจำกัดแอปเหล่านี้อย่างเข้มงวด

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

ใช้งานอยู่

แอปจะอยู่ในกลุ่มใช้งานอยู่ขณะที่มีการใช้งาน เพิ่งมีการใช้งาน หรือเมื่อทําสิ่งต่อไปนี้

  • เปิดใช้งานกิจกรรม
  • เรียกใช้บริการที่ทำงานอยู่เบื้องหน้าเป็นเวลานาน
  • ผู้ใช้แตะจากข้อความแจ้ง

หากแอปอยู่ในที่เก็บข้อมูล "ทำงานอยู่" ระบบจะไม่จำกัดงานหรือการแจ้งเตือนของแอป

การโต้ตอบของผู้ใช้ระบุว่าแอปทำงานอยู่

ใน Android 9 (API ระดับ 28) ขึ้นไป เมื่อผู้ใช้โต้ตอบกับแอปในบางลักษณะ ระบบจะวางแอปของคุณลงในที่เก็บข้อมูลที่ใช้งานอยู่ชั่วคราว หลังจากที่ผู้ใช้หยุดโต้ตอบกับแอป ระบบจะจัดแอปนั้นไว้ในที่เก็บข้อมูลตามประวัติการใช้งาน

ต่อไปนี้เป็นตัวอย่างของการโต้ตอบที่ทริกเกอร์ลักษณะการทํางานของระบบนี้

  • ผู้ใช้แตะการแจ้งเตือนที่แอปของคุณส่ง

  • ผู้ใช้โต้ตอบกับบริการที่ทำงานอยู่เบื้องหน้าในแอปโดยแตะปุ่มสื่อ

  • ผู้ใช้เชื่อมต่อกับแอปของคุณขณะโต้ตอบกับ Android Automotive OS ซึ่งแอปของคุณใช้บริการที่ทำงานอยู่เบื้องหน้าหรือ 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 ขึ้นไปก็ตาม

ประเมินที่เก็บข้อมูลลําดับความสําคัญ

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

  • โทรหา getAppStandbyBucket()

  • เรียกใช้คำสั่งต่อไปนี้ในหน้าต่างเทอร์มินัล

    adb shell am get-standby-bucket PACKAGE_NAME

ระบบจะจำกัดแอปทุกครั้งที่ระบบจัดให้อยู่ในที่เก็บข้อมูลสแตนด์บายแอปซึ่งมีค่ามากกว่า STANDBY_BUCKET_ACTIVE (10)

แนวทางปฏิบัติแนะนำ

หากแอปทำตามแนวทางปฏิบัติแนะนำสำหรับ Doze และสแตนด์บายแอปแล้ว ฟีเจอร์การจัดการพลังงานในภายหลังจะไม่ใช่เรื่องยาก อย่างไรก็ตาม ลักษณะการทํางานบางอย่างของแอปซึ่งก่อนหน้านี้ทํางานได้ดีอาจก่อให้เกิดปัญหา

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

  • หากแอปไม่แสดงการแจ้งเตือนเมื่อได้รับข้อความ Firebase Cloud Messaging (FCM) ที่มีความสําคัญสูง ผู้ใช้จะโต้ตอบกับแอปไม่ได้ จึงจะเลื่อนแอปไปยังที่เก็บข้อมูลแอปที่ใช้งานอยู่ อันที่จริงแล้ว การใช้ข้อความ FCM ที่มีลำดับความสำคัญสูงมีไว้เพื่อส่งการแจ้งเตือนไปยังผู้ใช้เท่านั้น ดังนั้นสถานการณ์นี้จึงไม่ควรเกิดขึ้น ใน 12L (API ระดับ 32) และต่ำกว่า หากทำเครื่องหมายข้อความ FCM เป็นสำคัญสูงอย่างไม่เหมาะสมเมื่อข้อความไม่ได้ทริกเกอร์การโต้ตอบของผู้ใช้ อาจทำให้ระบบลดลำดับความสำคัญของข้อความในอนาคต

  • หากแอปแยกออกเป็นหลายแพ็กเกจ แพ็กเกจเหล่านั้นอาจอยู่ในที่เก็บข้อมูลที่แตกต่างกันและมีระดับการเข้าถึงที่แตกต่างกัน ทดสอบแอปเหล่านี้ด้วยแพ็กเกจที่กำหนดให้กับที่เก็บข้อมูลต่างๆ เพื่อให้แน่ใจว่าแอปทำงานได้อย่างถูกต้อง