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 الأوسع نطاقًا:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=ar)