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

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

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

ผลลัพธ์

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

จัดการสถานะ

หลีกเลี่ยงการสร้างกิจกรรมใหม่ให้มากที่สุดในระหว่างการเปลี่ยนแปลงการกำหนดค่า และ ปล่อยให้ 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(): วิธีที่ทำให้มีการวาดมุมมองใหม่ รับค่าจาก WebView

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

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

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

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

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