إدارة حالة WebView

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

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

إدارة الحالة

تجنَّب إعادة إنشاء Activity قدر الإمكان أثناء تغييرات الضبط، واترك 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.

النتائج

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

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

هذا الدليل هو جزء من مجموعات الأدلة السريعة المنظَّمة التي تتناول أهداف تطوير Android الأوسع نطاقًا:

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

إذا كانت لديك أسئلة أو ملاحظات

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