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: