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
से इनहेरिट किया गया.
ऐसे कलेक्शन जिनमें यह गाइड शामिल है
यह गाइड, Quick Guide के इन चुने गए कलेक्शन का हिस्सा है. इनमें Android डेवलपमेंट के ज़्यादातर लक्ष्यों के बारे में बताया गया है:
