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
المجموعات التي تتضمّن هذا الدليل
يشكّل هذا الدليل جزءًا من مجموعات "الدليل السريع" المنسّقة التي تغطي أهدافًا أوسع لتطوير تطبيقات Android:
