Android Pie เพิ่มฟีเจอร์เพื่อป้องกันการฆ่าเกมที่ใช้ RAM หนักหากคุณออกโดยไม่ตั้งใจ

Android Pie กำลังเปิดตัวในวันนี้ และหนึ่งในคุณสมบัติเจ๋งๆ ที่ซ่อนอยู่คือความสามารถในการป้องกันไม่ให้เกมที่ใช้ RAM หนักมากถูกฆ่าหากคุณออกโดยไม่ตั้งใจ

ก่อนหน้านี้วันนี้ Google ประกาศอย่างเป็นทางการ Android Pie สำหรับ Google Pixel และ Google Pixel 2 หลังจากนั้นทันที สิ่งจำเป็นถูกปล่อยออกมา การอัปเดต Android 9 สำหรับโทรศัพท์ Essential อุปกรณ์อื่นๆที่เข้าร่วม ในโปรแกรม Android P เบต้าน่าจะได้รับการอัปเดตเร็วๆ นี้ ดังนั้นผู้ใช้ที่ข้ามการแสดงตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ในตอนนี้ก็ยังมีกิจกรรมให้ทำอีกมาก ในขณะที่เราเจาะลึกการเปิดตัวล่าสุดรวมถึง ซอร์สโค้ดหล่นบน AOSP และเอกสารข้อกำหนดความเข้ากันได้ (CDD) ล่าสุด เราจะอัปเดตข้อมูลใหม่ที่เราเปิดเผยให้คุณเป็นระยะ สิ่งที่น่าสนใจที่เราพบใน CDD คือส่วนสำหรับแอปและเกม "รุ่นหนา" (RAM หนัก) โดยที่ Android Pie จะจัดลำดับความสำคัญในการเก็บแอปเหล่านี้ไว้ใน RAM หากผู้ใช้ออกโดยไม่ตั้งใจ พวกเขา.

แอพและเกม "เฮฟวี่เวท" ใน Android Pie

มีการเพิ่มส่วนใหม่ให้กับ ซีดีดี ที่แสดงคุณลักษณะนี้ นี่คือสิ่งที่บอกว่า:

3.17. แอพรุ่นเฮฟวี่เวท

หากการใช้งานอุปกรณ์ประกาศคุณลักษณะ FEATURE_CANT_SAVE_STATE แสดงว่า:

  • [C-1-1] ต้องมีแอปที่ติดตั้งเพียงแอปเดียวที่ระบุ cantSaveState ที่ทำงานอยู่ในระบบในแต่ละครั้ง หากผู้ใช้ออกจากแอปดังกล่าวโดยไม่ได้ออกจากแอปอย่างชัดเจน (เช่น โดยการกดหน้าแรกในขณะที่ออกจากกิจกรรมที่ใช้งานอยู่ในระบบ แทนที่จะกดกลับโดยไม่เหลือ กิจกรรมที่ใช้งานอยู่ในระบบ) จากนั้น การใช้งานอุปกรณ์จะต้องจัดลำดับความสำคัญของแอปนั้นใน RAM เช่นเดียวกับที่ทำกับสิ่งอื่นๆ ที่คาดว่าจะยังคงทำงานอยู่ เช่น เบื้องหน้า บริการ แม้ว่าแอปดังกล่าวจะอยู่เบื้องหลัง แต่ระบบยังคงสามารถใช้ฟีเจอร์การจัดการพลังงานกับแอปดังกล่าวได้ เช่น การจำกัดการเข้าถึง CPU และเครือข่าย
  • [C-1-2] ต้องจัดเตรียม UI ที่เพียงพอเพื่อเลือกแอปที่จะไม่เข้าร่วมในกลไกการบันทึก/กู้คืนสถานะปกติ เมื่อผู้ใช้เปิดแอปที่สองที่ประกาศด้วยแอตทริบิวต์ cantSaveState
  • [C-1-3] ต้องไม่ใช้การเปลี่ยนแปลงอื่นๆ ในนโยบายกับแอปที่ระบุ cantSaveState เช่น การเปลี่ยนแปลงประสิทธิภาพของ CPU หรือการเปลี่ยนลำดับความสำคัญของกำหนดการ

หากการใช้งานอุปกรณ์ไม่ประกาศคุณสมบัติ FEATURE_CANT_SAVE_STATE จากนั้นพวกเขา:

  • [C-1-1] ต้องละเว้นแอตทริบิวต์ cantSaveState ที่กำหนดโดยแอป และต้องไม่เปลี่ยนพฤติกรรมของแอปตามแอตทริบิวต์นั้น

โดยพื้นฐานแล้วนี่หมายความว่าหากอุปกรณ์รองรับ FEATURE_CANT_SAVE_STATE จากนั้นจะต้องจัดลำดับความสำคัญของการเก็บ RAM ไว้ในแอปที่รันอยู่ซึ่งระบุ ไม่สามารถบันทึกสถานะได้ คุณลักษณะ. การจัดลำดับความสำคัญของ RAM นี้จะเริ่มทำงานหากผู้ใช้ออกจากแอปหรือเกมโดยการกดปุ่มโฮม หรือออกจากแอปหรือเกมโดยไม่ได้ออกจากแอปอย่างชัดเจน (เช่น การกดปุ่มย้อนกลับ หรือปุ่มออก) นอกจากนี้ ระบบยังสามารถประหยัดพลังงานได้โดยการจำกัดการเข้าถึง CPU และเครือข่ายบนแอปเหล่านั้น แต่แอปเหล่านั้นไม่สามารถเพิ่ม RAM ได้โดยการฆ่าแอปเหล่านั้น เว้นแต่ว่า จำเป็น. สุดท้ายนี้ โปรดทราบว่าอนุญาตให้เรียกใช้แอปเดียวที่มีแอตทริบิวต์ cantSaveState ที่กำหนดไว้เท่านั้น หากคุณพยายามเปิดแอปอื่นโดยกำหนดแอตทริบิวต์นี้ไว้ในขณะที่แอปอื่นกำลังทำงานอยู่ Android Pie จะขอให้คุณเลือกเกมที่คุณต้องการให้ทำงานต่อไป

คุณสามารถตรวจสอบว่าอุปกรณ์ของคุณรองรับ FEATURE_CANT_SAVE_STATE หรือไม่โดยเรียกใช้คำสั่งสองคำสั่งต่อไปนี้ผ่าน ADB:

adb shell
dumpsys package | grep "cant_save_state"

หากต้องการตรวจสอบว่าแอประบุแอตทริบิวต์ cantSaveState หรือไม่ จะต้องทำการถอดรหัสแอปและดูที่ไฟล์ Manifest หรือใช้ dumpsys package package.name.here คำสั่งในเชลล์ ADB โปรดทราบว่าแอตทริบิวต์นี้เพิ่งเพิ่มใน API ระดับ 28 (Android 9 Pie) เท่านั้น ดังนั้นจึงไม่น่าเป็นไปได้ที่แอปหรือเกมจำนวนมากจะใช้ประโยชน์จากคุณลักษณะนี้

คุณสมบัตินี้จะมีประโยชน์อย่างเหลือเชื่อสำหรับอุปกรณ์ที่มี RAM เพียงเล็กน้อยและ/หรือแอปที่กิน RAM จำนวนมาก ตัวอย่างเช่น Fortnite Mobile บน Android ต้องมี RAM อย่างน้อย 3GB เนื่องจาก RAM กินไปมาก (โดยไม่ได้เปิดตัวเกม Fortnite Mobile จึงสำรอง RAM 1.6GB บน Google Pixel 2 XL ของฉัน) หาก Fortnite กำหนดเป้าหมาย SDK ระดับ 28 และใช้ฟีเจอร์นี้ หมายความว่าการออกจากเกมโดยไม่ได้ตั้งใจจะหวังว่าจะป้องกันไม่ให้ถูกฆ่าทันทีหากอุปกรณ์ของคุณเหลือน้อย RAM ฟรี น่าเสียดายที่ Fortnite กำหนดเป้าหมายเฉพาะ SDK ระดับ 21 ในขณะนี้ (Android 5.0 Lollipop) ดังนั้นจึงน่าเสียดายที่ไม่ได้ใช้ประโยชน์จาก API ล่าสุดที่ Google นำเสนอใน Android Pie นับประสาอะไรกับ Android Oreo, Android Nougat หรือ Android Marshmallow หวังว่าเกมอื่นๆ จะอัปเดตเพื่อใช้ประโยชน์จากฟีเจอร์นี้ ภายในปีหน้า Google จะต้องการพวกเขา เพื่ออัปเดตหากพวกเขาต้องการส่งการอัปเดตต่อไปบน Google Play Store