ניהול המצב של WebView

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 בצורה נכונה. עם זאת, אם לא מנהלים את WebView בצורה נכונה, Compose יוצר אותו מחדש לעיתים קרובות.

נקודות עיקריות

  • android:configChanges: מאפיין של רכיב <activity> במניפסט. רשימה של שינויי ההגדרות שמטופלים על ידי הפעילות.
  • View#invalidate(): שיטה שגורמת לציור מחדש של תצוגה. הועברה בירושה ל-WebView.

תוצאות

רכיבי WebView של האפליקציה שומרים עכשיו את המצב ואת מיקום הגלילה שלהם במהלך מספר שינויים בהגדרות, החל משינויים בגודל ועד לשינויים בכיוון המכשיר, ועד לקיפול המכשיר ופתיחתו.

אוספים שמכילים את המדריך הזה

המדריך הזה הוא חלק מהאוספים הבאים של מדריכים מהירים, שמכסים יעדים רחבים יותר לפיתוח Android:

מאפשרים לאפליקציה לתמוך בחוויית משתמש אופטימלית בטאבלטים, במכשירים מתקפלים ובמכשירי ChromeOS.

יש לכם שאלות או משוב

אתם יכולים להיכנס לדף השאלות הנפוצות שלנו ולקרוא מדריכים מהירים, או ליצור איתנו קשר ולספר לנו מה דעתכם.