WebView
là một thành phần thường được sử dụng. Thành phần này cung cấp hệ thống quản lý trạng thái tiên tiến. WebView
phải giữ nguyên trạng thái và vị trí cuộn khi có những thay đổi về cấu hình. WebView
có thể rời khỏi vị trí cuộn khi người dùng xoay thiết bị hoặc mở gập màn hình điện thoại, buộc người dùng phải cuộn lại từ đầu WebView
đến vị trí cuộn trước đó.
WebView
thích hợp trong việc quản lý trạng thái của thuộc tính này. Bạn có thể tận dụng tính năng này bằng cách quản lý càng nhiều thay đổi cấu hình càng tốt để giảm thiểu số lần WebView
được tạo lại. Ứng dụng của bạn phải xử lý các thay đổi về cấu hình vì việc tạo lại hoạt động (cách xử lý các thay đổi về cấu hình của hệ thống) sẽ tạo lại WebView
, khiến WebView
bị mất trạng thái.
Kết quả
Các thành phần WebView
của ứng dụng sẽ giữ nguyên trạng thái và vị trí cuộn khi cấu hình có nhiều sự thay đổi, như thay đổi kích thước, thay đổi hướng hoặc trạng thái gập/mở thiết bị.
Quản lý trạng thái
Tránh tạo lại hoạt động nhiều nhất có thể trong quá trình thay đổi cấu hình và vô hiệu hoá WebView
để thành phần này có thể thay đổi kích thước trong khi vẫn giữ nguyên trạng thái.
Cách quản lý trạng thái của WebView
:
- Khai báo các thay đổi về cấu hình do ứng dụng của bạn xử lý
- Vô hiệu hoá trạng thái
WebView
1. Thêm thay đổi cấu hình vào tệp AndroidManifest.xml
của ứng dụng
Tránh tạo lại hoạt động bằng cách chỉ định các thay đổi về cấu hình do ứng dụng của bạn xử lý (thay vì để hệ thống xử lý):
<activity
android:name=".MyActivity"
android:configChanges="screenLayout|orientation|screenSize
|keyboard|keyboardHidden|smallestScreenSize" />
2. Vô hiệu hoá WebView
bất cứ khi nào ứng dụng của bạn nhận thấy có sự thay đổi về cấu hình
Kotlin
override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) webView.invalidate() }
Java
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); webview.invalidate(); }
Bước này chỉ áp dụng cho hệ thống khung hiển thị, vì Jetpack Compose không cần vô hiệu hoá bất kỳ thứ gì để đổi kích thước các phần tử Composable
một cách chính xác. Tuy nhiên, Compose sẽ thường xuyên tạo lại WebView
nếu không được quản lý đúng cách.
Điểm chính
android:configChanges
: Thuộc tính của phần tử tệp kê khai<activity>
. Liệt kê các thay đổi về cấu hình do hoạt động xử lý.View#invalidate()
: Phương thức khiến khung hiển thị được vẽ lại. Được kế thừa bởiWebView
.
Bộ sưu tập có chứa hướng dẫn này
Hướng dẫn này là một phần của các bộ sưu tập Hướng dẫn nhanh được tuyển chọn, bao gồm các mục tiêu phát triển Android rộng hơn:
