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 ที่กว้างขึ้น
