वेबव्यू स्टेट मैनेजमेंट

तीन स्टार वाली रेटिंग का आइकॉन

WebView एक ऐसा कॉम्पोनेंट है जिसका इस्तेमाल आम तौर पर किया जाता है. यह स्टेट मैनेजमेंट के लिए एक बेहतर सिस्टम उपलब्ध कराता है. कॉन्फ़िगरेशन में बदलाव होने पर भी, WebView को अपनी स्थिति और स्क्रोल करने की जगह बनाए रखनी चाहिए. जब उपयोगकर्ता डिवाइस को घुमाता है या फ़ोल्ड किए जा सकने वाले फ़ोन को खोलता है, तो WebView की स्क्रोल पोज़िशन बदल सकती है. इससे उपयोगकर्ता को WebView में सबसे ऊपर से लेकर पिछली स्क्रोल पोज़िशन तक फिर से स्क्रोल करना पड़ता है.

सबसे सही तरीके

WebView को कम से कम बार फिर से बनाएं. WebView अपनी स्थिति को मैनेज करने में बेहतर है. इस क्वालिटी का फ़ायदा पाने के लिए, कॉन्फ़िगरेशन में ज़्यादा से ज़्यादा बदलाव करें. आपके ऐप्लिकेशन को कॉन्फ़िगरेशन में हुए बदलावों को मैनेज करना होगा, क्योंकि Activity को फिर से बनाने (सिस्टम के कॉन्फ़िगरेशन में हुए बदलावों को मैनेज करने का तरीका) से WebView भी फिर से बन जाता है. इससे WebView अपनी स्थिति खो देता है.

सामग्री

  • android:configChanges: मेनिफ़ेस्ट के <activity> एलिमेंट का एट्रिब्यूट. इस गतिविधि से मैनेज किए गए कॉन्फ़िगरेशन में हुए बदलावों की सूची दिखाता है.
  • View#invalidate(): यह एक ऐसा तरीका है जिससे व्यू को फिर से बनाया जाता है. WebView से इनहेरिट किया गया.

चरण

WebView की स्थिति को सेव करने के लिए, Activity को फिर से बनाने से बचें. इसके बाद, 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 को अक्सर फिर से बनाता है. अपने Compose ऐप्लिकेशन में WebView की स्थिति को सेव और वापस लाने के लिए, साथी वेबव्यू रैपर का इस्तेमाल करें.

नतीजे

आपके ऐप्लिकेशन के WebView कॉम्पोनेंट अब अपनी स्थिति और स्क्रोल करने की जगह को बनाए रखते हैं. ऐसा कॉन्फ़िगरेशन में कई तरह के बदलावों के दौरान होता है. जैसे, साइज़ बदलना, ओरिएंटेशन बदलना, फ़ोल्ड करना, और अनफ़ोल्ड करना.

अन्य संसाधन

कॉन्फ़िगरेशन में हुए बदलावों और उन्हें मैनेज करने के तरीके के बारे में ज़्यादा जानने के लिए, कॉन्फ़िगरेशन में हुए बदलावों को मैनेज करें लेख पढ़ें.