إدارة حالة 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();
}

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

النقاط الرئيسية

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

المجموعات التي تتضمّن هذا الدليل

يشكّل هذا الدليل جزءًا من مجموعات &quot;الدليل السريع&quot; المنسّقة التي تغطي أهدافًا أوسع لتطوير تطبيقات Android:

تفعيل تطبيقك ليتوافق مع تجربة مستخدم محسَّنة على الأجهزة اللوحية والأجهزة القابلة للطي وأجهزة ChromeOS

هل لديك أسئلة أو ملاحظات؟

يمكنك الانتقال إلى صفحة الأسئلة الشائعة والاطّلاع على الأدلة السريعة أو التواصل معنا وإعلامنا بأفكارك.