Quản lý trạng thái WebView

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. 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 tạo lại WebView. Ứng dụng của bạn nên 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.

Quản lý trạng thái

Tránh tạo lại Activity nhiều nhất có thể trong quá trình thay đổi cấu hình và để WebView mất hiệu lực để 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 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 thay đổi 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. Kế thừa từ WebView.

Kết quả

Giờ đây, các thành phần WebView của ứng dụng đã 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ị.

Các bộ sưu tập 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 này, bao gồm các mục tiêu phát triển Android rộng hơn:

Cho phép ứng dụng của bạn hỗ trợ trải nghiệm người dùng được tối ưu hoá trên máy tính bảng, thiết bị có thể gập lại và thiết bị ChromeOS.

Bạn có câu hỏi hoặc ý kiến phản hồi

Hãy truy cập vào trang câu hỏi thường gặp để tìm hiểu về các hướng dẫn nhanh hoặc liên hệ với chúng tôi để cho chúng tôi biết suy nghĩ của bạn.