การเปลี่ยนแปลงลักษณะการทำงาน: แอปที่กำหนดเป้าหมายเป็น Android 16 ขึ้นไป

Android 16 ก็มีการเปลี่ยนแปลงลักษณะการทำงานที่อาจส่งผลต่อแอปของคุณเช่นเดียวกับรุ่นก่อนหน้า การเปลี่ยนแปลงลักษณะการทำงานต่อไปนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น Android 16 ขึ้นไปเท่านั้น หากแอปกำหนดเป้าหมายเป็น Android 16 ขึ้นไป คุณควรแก้ไขแอปให้รองรับลักษณะการทำงานเหล่านี้ (หากมี)

นอกจากนี้ โปรดตรวจสอบรายการการเปลี่ยนแปลงลักษณะการทำงานที่ส่งผลต่อแอปทั้งหมดที่ทำงานบน Android 16 โดยไม่คำนึงถึง targetSdkVersion ของแอป

ประสบการณ์ของผู้ใช้และ UI ของระบบ

Android 16 มีการเปลี่ยนแปลงต่อไปนี้ซึ่งมีจุดประสงค์เพื่อสร้างประสบการณ์การใช้งานที่สม่ำเสมอและใช้งานง่ายยิ่งขึ้น

ต้องย้ายข้อมูลหรือเลือกไม่ใช้ฟีเจอร์การย้อนกลับแบบคาดคะเน

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 16 ขึ้นไปและทํางานบนอุปกรณ์ Android 16 ขึ้นไป ระบบจะเปิดใช้ภาพเคลื่อนไหวของระบบสําหรับท่าทางสัมผัสย้อนกลับแบบคาดเดา (กลับไปยังหน้าจอหลัก ข้ามงาน และข้ามกิจกรรม) โดยค่าเริ่มต้น นอกจากนี้ ระบบจะไม่เรียกใช้ onBackPressed และจะไม่ส่ง KeyEvent.KEYCODE_BACK อีกต่อไป

หากแอปของคุณขัดจังหวะเหตุการณ์ "กลับ" และคุณยังไม่ได้ย้ายข้อมูลไปยัง "กลับ" แบบคาดการณ์ ให้อัปเดตแอปเพื่อใช้ API การนําทางกลับที่รองรับ หรือเลือกไม่ใช้ชั่วคราวโดยตั้งค่าแอตทริบิวต์ android:enableOnBackInvokedCallback เป็น false ในแท็ก <application> หรือ <activity> ของไฟล์ AndroidManifest.xml ของแอป

ภาพเคลื่อนไหวแบบคาดเดาซึ่งแสดงการกลับไปยังหน้าแรก
ภาพเคลื่อนไหวข้ามกิจกรรมแบบคาดเดา
ภาพเคลื่อนไหวข้ามงานที่คาดคะเน

ฟังก์ชันหลัก

Android 16 มีการเปลี่ยนแปลงต่อไปนี้ที่แก้ไขหรือขยายความสามารถหลักต่างๆ ของระบบ Android

การเพิ่มประสิทธิภาพการจัดกำหนดเวลางานแบบอัตราคงที่

ก่อนที่จะกำหนดเป้าหมายเป็น Android 16 เมื่อ scheduleAtFixedRate พลาดการเรียกใช้งานเนื่องจากอยู่นอกวงจรการประมวลผลที่ถูกต้อง การเรียกใช้ทั้งหมดที่พลาดไปจะดำเนินการทันทีเมื่อแอปกลับไปยังวงจรการประมวลผลที่ถูกต้อง

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

หน้าจอขนาดใหญ่และรูปแบบของอุปกรณ์

Android 16 มีการเปลี่ยนแปลงต่อไปนี้สำหรับแอปเมื่อแสดงบนอุปกรณ์หน้าจอขนาดใหญ่

เลย์เอาต์ที่ปรับเปลี่ยนได้

เนื่องจากตอนนี้แอป Android ทำงานได้ในอุปกรณ์ที่หลากหลาย (เช่น โทรศัพท์ แท็บเล็ต อุปกรณ์แบบพับได้ และเดสก์ท็อป) รวมถึงโหมดหน้าต่างบนหน้าจอขนาดใหญ่ (เช่น การแยกหน้าจอและการแบ่งหน้าจอแบบเดสก์ท็อป) นักพัฒนาแอปจึงควรสร้างแอป Android ที่ปรับให้เข้ากับหน้าจอและขนาดหน้าต่างได้ทุกขนาด โดยไม่คำนึงถึงการวางแนวของอุปกรณ์ กระบวนทัศน์ต่างๆ เช่น การจํากัดการวางแนวและการปรับขนาดใหม่นั้นจํากัดเกินไปในโลกปัจจุบันที่มีอุปกรณ์หลายประเภท

ละเว้นข้อจำกัดด้านการวางแนว การปรับขนาด และอัตราส่วนการแสดงผล

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

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

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบที่พบได้ทั่วไป

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

การเปิดใช้การเปลี่ยนอุปกรณ์จะส่งผลให้มีการสร้างกิจกรรมใหม่มากขึ้น ซึ่งอาจส่งผลให้สถานะผู้ใช้สูญหายหากไม่เก็บรักษาอย่างเหมาะสม ดูวิธีบันทึกสถานะ UI อย่างถูกต้องในบันทึกสถานะ UI

รายละเอียดการติดตั้งใช้งาน

ระบบจะละเว้นแอตทริบิวต์ไฟล์ Manifest และ API รันไทม์ต่อไปนี้ในอุปกรณ์หน้าจอขนาดใหญ่ในโหมดเต็มหน้าจอและโหมดหลายหน้าต่าง

ระบบจะไม่สนใจค่าต่อไปนี้สำหรับ screenOrientation และ setRequestedOrientation()

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

android:resizeableActivity="false", android:minAspectRatio และ android:maxAspectRatio ไม่มีผลต่อการปรับขนาดการแสดงผล

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

ข้อยกเว้น

ข้อจำกัดด้านการวางแนว การปรับขนาด และอัตราส่วนการแสดงผลของ Android 16 จะไม่มีผลในกรณีต่อไปนี้

  • เกม (ตาม Flag android:appCategory)
  • ผู้ใช้เลือกใช้ลักษณะการทำงานเริ่มต้นของแอปในการตั้งค่าสัดส่วนภาพของอุปกรณ์อย่างชัดเจน
  • หน้าจอที่มีขนาดเล็กกว่า sw600dp

เลือกไม่ใช้ชั่วคราว

หากต้องการเลือกไม่ใช้กิจกรรมที่เฉพาะเจาะจง ให้ประกาศPROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITYพร็อพเพอร์ตี้ไฟล์ Manifest ดังนี้

<activity ...>
  <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
  ...
</activity>

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

<application ...>
  <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>