إدارة حالة 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

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

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