إدارة حالة WebView

رمز التقييم بثلاث نجوم

WebView هو مكوّن شائع الاستخدام يوفّر نظامًا متقدّمًا لـ إدارة الحالة. يجب أن يحافظ WebView على حالته وموضع التمرير عند إجراء تغييرات في الإعدادات. يمكن أن يفقد WebView موضع التمرير عندما يدوّر المستخدم الجهاز أو يفتح هاتفًا قابلاً للطي، ما يضطر المستخدم إلى التمرير مرة أخرى من أعلى WebView إلى موضع التمرير السابق.

أفضل الممارسات

قلِّل عدد المرات التي يتم فيها إعادة إنشاء WebView. ‫WebView جيد في إدارة حالته، ويمكنك الاستفادة من هذه الميزة من خلال إدارة أكبر عدد ممكن من تغييرات الإعدادات. يجب أن يعالج تطبيقك تغييرات الإعدادات لأنّ إعادة إنشاء Activity (طريقة النظام في معالجة تغييرات الإعدادات) تعيد إنشاء WebView أيضًا، ما يؤدي إلى فقدان WebView لحالته.

المكوّنات

  • android:configChanges: سمة عنصر <activity> في البيان تسرد تغييرات الإعدادات التي يعالجها النشاط.
  • View#invalidate(): طريقة تؤدي إلى إعادة رسم طريقة عرض موروثة من WebView

الخطوات

لحفظ حالة WebView، تجنَّب Activity قدر الإمكان، ثم اسمح لـ 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();
}

تنطبق هذه الخطوة على نظام العرض فقط، لأنّ Jetpack Compose لا يحتاج إلى إبطال أي شيء لتغيير حجم Composable عناصر بشكل صحيح. ومع ذلك، يعيد Compose إنشاء WebView بشكل متكرر إذا لم تتم إدارته بشكل صحيح. استخدِم مغلّف Accompanist WebView لحفظ حالة WebView واستعادتها في تطبيقات Compose.

النتائج

تحتفظ مكوّنات WebView في تطبيقك الآن بحالتها وموضع التمرير عند إجراء تغييرات متعددة في الإعدادات، بدءًا من تغيير الحجم إلى تغيير الاتجاه إلى الطي والفتح.

مراجع إضافية

لمزيد من المعلومات حول تغييرات الإعدادات وكيفية إدارتها، اطّلِع على مقالة معالجة تغييرات الإعدادات.