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

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

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 स्थिति को सेव और वापस लाने के लिए, Accompanist WebView रैपर का इस्तेमाल करें.

नतीजे

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

अन्य संसाधन

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