จัดการสถานะ WebView

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

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

ผลลัพธ์

คอมโพเนนต์ WebView ของแอปจะรักษาสถานะและตำแหน่งการเลื่อนไว้เมื่อมีการเปลี่ยนแปลงการกำหนดค่าหลายรายการ ตั้งแต่การปรับขนาดไปจนถึงการเปลี่ยนแปลงการวางแนว ไปจนถึงการพับและกางอุปกรณ์

ความเข้ากันได้ของเวอร์ชัน

การติดตั้งใช้งานนี้เข้ากันได้กับ API ทุกระดับ

ความสัมพันธ์

ไม่มี

จัดการสถานะ

หลีกเลี่ยงการสร้างกิจกรรมขึ้นมาใหม่ให้ได้มากที่สุดระหว่างการเปลี่ยนแปลงการกำหนดค่า และปล่อยให้ WebView ทำให้เป็นโมฆะเพื่อให้ปรับขนาดได้ในขณะที่ยังคงรักษาสถานะไว้

วิธีจัดการสถานะ WebView

  • ประกาศการเปลี่ยนแปลงการกำหนดค่าที่แอปจัดการ
  • ทำให้สถานะ WebView เป็นโมฆะ

1. เพิ่มการเปลี่ยนแปลงการกำหนดค่าลงในไฟล์ AndroidManifest.xml ของแอป

หลีกเลี่ยงการสร้างกิจกรรมขึ้นมาใหม่โดยระบุการเปลี่ยนแปลงการกำหนดค่าที่แอปจัดการ (แทนที่จะเป็นระบบ)

<activity
  android:name=".MyActivity"
  android:configChanges="screenLayout|orientation|screenSize
      |keyboard|keyboardHidden|smallestScreenSize" />

2. ทำให้ WebView เป็นโมฆะทุกครั้งที่แอปได้รับการเปลี่ยนแปลงการกำหนดค่า

Kotlin

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    webView.invalidate()
}

Java

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    webview.invalidate();
}

ขั้นตอนนี้ใช้ได้กับระบบ View เท่านั้น เนื่องจาก Jetpack Compose ไม่จำเป็นต้อง ทำให้สิ่งใดเป็นโมฆะเพื่อปรับขนาด Composable องค์ประกอบอย่างถูกต้อง อย่างไรก็ตาม Compose จะสร้าง WebView ขึ้นมาใหม่บ่อยครั้งหากไม่ได้จัดการอย่างถูกต้อง

ข้อมูลสำคัญ

  • android:configChanges: แอตทริบิวต์ขององค์ประกอบ <activity> ในไฟล์ Manifest แสดงรายการการเปลี่ยนแปลงการกำหนดค่าที่กิจกรรมจัดการ
  • View#invalidate(): เมธอดที่ทำให้มีการวาด View ขึ้นมาใหม่ WebView สืบทอดเมธอดนี้

คอลเล็กชันที่มีคำแนะนำนี้

คำแนะนำนี้เป็นส่วนหนึ่งของคอลเล็กชันคำแนะนำฉบับย่อที่คัดสรรมาแล้ว ซึ่งครอบคลุมเป้าหมายการพัฒนา Android ที่กว้างขึ้น

เปิดใช้แอปให้รองรับประสบการณ์การใช้งานของผู้ใช้ที่เพิ่มประสิทธิภาพแล้วในแท็บเล็ต โทรศัพท์แบบพับได้ และอุปกรณ์ ChromeOS

มีคำถามหรือความคิดเห็น

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