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
עם זאת, אם לא מנהלים את WebView
בצורה נכונה, הוא נוצר מחדש לעיתים קרובות.
נקודות עיקריות
-
android:configChanges
: מאפיין של רכיב<activity>
במניפסט. רשימה של שינויי ההגדרות שהפעילות טיפלה בהם. -
View#invalidate()
: שיטה שגורמת לציור מחדש של תצוגה. הועבר בירושה אלWebView
.
אוספים שכוללים את המדריך הזה
המדריך הזה הוא חלק מאוספים של מדריכים מהירים בנושאים שקשורים לפיתוח ל-Android:
