कॉन्फ़िगरेशन के बदलावों को हैंडल करना

ऐप्लिकेशन के इस्तेमाल के दौरान, डिवाइस के कुछ कॉन्फ़िगरेशन बदल सकते हैं. इनमें ये शामिल हैं, लेकिन इन तक सीमित नहीं हैं:

  • ऐप्लिकेशन के डिसप्ले का साइज़
  • स्क्रीन ओरिएंटेशन
  • फ़ॉन्ट का साइज़ और मोटाई
  • स्थान-भाषा
  • गहरे रंग वाला मोड बनाम हल्के रंग वाला मोड
  • कीबोर्ड की उपलब्धता

इनमें से ज़्यादातर कॉन्फ़िगरेशन बदलाव, कुछ उपयोगकर्ता इंटरैक्शन की वजह से होते हैं. इसके लिए उदाहरण के लिए, डिवाइस को घुमाने या फ़ोल्ड करने से स्क्रीन स्पेस कम हो जाता है आपके ऐप्लिकेशन पर उपलब्ध हो. इसी तरह, डिवाइस की सेटिंग, जैसे कि फ़ॉन्ट साइज़, या पसंदीदा थीम Configuration ऑब्जेक्ट.

आम तौर पर, इन पैरामीटर के लिए आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में काफ़ी बड़े बदलाव करने पड़ते हैं Android प्लैटफ़ॉर्म में, बदलावों को बदलने के लिए एक खास तरीका बनाया गया है. यह तरीका Activity मनोरंजन है.

मनोरंजन की अन्य गतिविधियां

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

मनोरंजन से जुड़े व्यवहार से, ऐप्लिकेशन को नए कॉन्फ़िगरेशन के हिसाब से ढलने में मदद मिलती है. इसके लिए, आपके ऐप्लिकेशन को, मेल खाने वाले वैकल्पिक रिसॉर्स से, अपने-आप फिर से लोड होने में मदद करेगा नए डिवाइस का कॉन्फ़िगरेशन.

मनोरंजन का उदाहरण

ऐसे TextView का इस्तेमाल करें जो स्टैटिक टाइटल दिखाता हो android:text="@string/title", जैसा कि लेआउट एक्सएमएल फ़ाइल में बताया गया है. जब व्यू में बनाया जाता है, तो यह मौजूदा भाषा के आधार पर टेक्स्ट को ठीक एक बार सेट करता है. अगर भाषा में बदलाव हो जाता है, तो सिस्टम गतिविधि को फिर से प्रोसेस करता है. इस वजह से, सिस्टम साथ ही, व्यू को फिर से बनाता है और नए व्यू के आधार पर सही वैल्यू से शुरू करता है भाषा.

मनोरंजन से, खेत के रूप में रखे गए राज्य को भी हटा दिया जाता है Activity या उसके किसी भी मौजूदा Fragment, View या अन्य ऑब्जेक्ट में. यह ऐसा इसलिए है, क्योंकि Activity मनोरंजन, Activity का एक बिलकुल नया इंस्टेंस बनाता है और यूज़र इंटरफ़ेस (यूआई) है. इसके अलावा, पुराना Activity अब दिख नहीं रहा है या मान्य नहीं है. इसलिए, ऐसा कोई भी इसके बाकी संदर्भ या इसमें शामिल ऑब्जेक्ट पुरानी हैं. इनकी वजह से गड़बड़ियां, मेमोरी लीक, और क्रैश.

उपयोगकर्ता की उम्मीदें

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

यह पुष्टि करने के लिए कि आपके ऐप्लिकेशन में राज्य सुरक्षित है या नहीं, ऐसी कार्रवाइयां जिनकी वजह से ऐप्लिकेशन के फ़ोरग्राउंड में होने और बैकग्राउंड में चालू रहता है. इन कार्रवाइयों में ये शामिल :

  • डिवाइस को घुमाया जा रहा है
  • मल्टी-विंडो मोड चालू किया जा रहा है
  • मल्टी-विंडो मोड या फ़्री-फ़ॉर्म विंडो में ऐप्लिकेशन का साइज़ बदलना
  • फ़ोल्ड किए जा सकने वाले डिवाइस को एक से ज़्यादा डिसप्ले वाले मोड में फ़ोल्ड करना
  • सिस्टम की थीम बदलना. जैसे, गहरे रंग वाला मोड बनाम हल्के रंग वाला मोड
  • फ़ॉन्ट का साइज़ बदलना
  • सिस्टम या ऐप्लिकेशन की भाषा बदलना
  • हार्डवेयर कीबोर्ड को कनेक्ट या डिसकनेक्ट करना
  • डॉक को कनेक्ट या डिसकनेक्ट करना

इस स्थिति को बनाए रखने के लिए, तीन मुख्य तरीके अपनाए जा सकते हैं: Activity मनोरंजन. किस राज्य का इस्तेमाल करना है, यह इस बात पर निर्भर करता है कि आपको किस राज्य में सुरक्षित रखें:

  • जटिल या बड़े डेटा की मौत को रोकने के लिए, लोकल परसिस्टेंस. स्थायी लोकल स्टोरेज में डेटाबेस या DataStore शामिल होते हैं.
  • बनाए गए ऑब्जेक्ट जैसे कि ViewModel इंस्टेंस, यूज़र इंटरफ़ेस (यूआई) से जुड़ी स्थिति को हैंडल करने के लिए जब उपयोगकर्ता सक्रिय रूप से ऐप्लिकेशन का इस्तेमाल कर रहा हो, तब मेमोरी.
  • सिस्टम से शुरू की गई प्रोसेस बंद होने और उसे बनाए रखने के लिए, सेव की गई इंस्टेंस की स्थिति कुछ समय के लिए होती है जो उपयोगकर्ता के इनपुट या नेविगेशन पर निर्भर करती है.

इनमें से हर एक के एपीआई के बारे में ज़्यादा जानने के लिए, और जब हर यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करना सही हो, तो यूज़र इंटरफ़ेस (यूआई) की स्थितियां सेव करें देखें.

मनोरंजन की गतिविधि पर पाबंदी लगाएं

कॉन्फ़िगरेशन में किए गए कुछ बदलावों के लिए, गतिविधियों को अपने-आप फिर से चालू होने से रोका जा सकता है. Activity को फिर से चालू करने पर, पूरे यूज़र इंटरफ़ेस (यूआई) और हासिल किए गए ऑब्जेक्ट को फिर से बनाया जाता है Activity से मिला डेटा. आपके पास, ऐसा करने से बचने की सही वजहें हो सकती हैं. इसके लिए उदाहरण के लिए, हो सकता है कि आपके ऐप्लिकेशन को किसी खास इवेंट के दौरान संसाधनों को अपडेट करने की ज़रूरत न पड़े कॉन्फ़िगरेशन में बदलाव हो सकता है या शायद आपकी परफ़ॉर्मेंस पर कोई असर पड़ सकता है. ऐसी स्थिति में, आपके पास यह एलान करने का विकल्प है कि आपकी गतिविधि, कॉन्फ़िगरेशन में हुए बदलाव को खुद हैंडल करती है और आपकी गतिविधि को फिर से चालू करने से, सिस्टम को पूरी तरह रोका जा सकता है.

कॉन्फ़िगरेशन में किए गए खास बदलावों के लिए, गतिविधि को फिर से चालू करने की सुविधा बंद करने के लिए, इसमें कॉन्फ़िगरेशन टाइप को android:configChanges में जोड़ें आपकी AndroidManifest.xml फ़ाइल में <activity> की एंट्री. संभावित वैल्यू android:configChanges एट्रिब्यूट के लिए दस्तावेज़.

यह मेनिफ़ेस्ट कोड, MyActivity के लिए Activity मनोरंजन की सुविधा को तब बंद करता है, जब स्क्रीन ओरिएंटेशन और कीबोर्ड की उपलब्धता में बदलाव होता है:

<activity
    android:name=".MyActivity"
    android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
    android:label="@string/app_name">

कॉन्फ़िगरेशन में किए गए कुछ बदलावों की वजह से, गतिविधि हमेशा रीस्टार्ट हो सकती है. इसे बंद नहीं किया जा सकता उन्हें. उदाहरण के लिए, डाइनैमिक रंग बदलने की सेटिंग को बंद नहीं किया जा सकता इसे Android 12L (एपीआई लेवल 32) में लॉन्च किया गया है.

व्यू सिस्टम में कॉन्फ़िगरेशन में हुए बदलावों पर प्रतिक्रिया दें

View सिस्टम में, जब कोई कॉन्फ़िगरेशन बदलता है, जिसके लिए आपके पास Activity मनोरंजन बंद कर दिया गया है, गतिविधि के लिए इस नंबर पर कॉल आएगा Activity.onConfigurationChanged(). अटैच किए गए व्यू को View.onConfigurationChanged() पर कॉल करें. कॉन्फ़िगरेशन बदलावों के लिए को android:configChanges में नहीं जोड़ा गया है, सिस्टम इस गतिविधि को फिर से बनाता है पहले की तरह.

onConfigurationChanged() कॉलबैक तरीके को Configuration ऑब्जेक्ट, जो डिवाइस के नए कॉन्फ़िगरेशन के बारे में बताता है. मैसेज पढ़ा गया Configuration ऑब्जेक्ट में मौजूद फ़ील्ड से यह तय किया जा सकता है कि कॉन्फ़िगरेशन है. बाद में बदलाव करने के लिए, संसाधनों को अपडेट करें जिसे आपके इंटरफ़ेस में इस्तेमाल किया जाता है. जब सिस्टम इस तरीके को कॉल करता है, तो आपकी गतिविधि Resources ऑब्जेक्ट को अपडेट किया गया है, ताकि वह नए कॉन्फ़िगरेशन. इससे आपको सिस्टम के बिना अपने यूज़र इंटरफ़ेस (यूआई) के एलिमेंट रीसेट करने की सुविधा मिलती है आपकी गतिविधि को रीस्टार्ट कर रहा है.

उदाहरण के लिए, नीचे दी गई onConfigurationChanged() लागू करने की जांच कीबोर्ड उपलब्ध है या नहीं:

Kotlin

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)

    // Checks whether a keyboard is available
    if (newConfig.keyboardHidden === Configuration.KEYBOARDHIDDEN_YES) {
        Toast.makeText(this, "Keyboard available", Toast.LENGTH_SHORT).show()
    } else if (newConfig.keyboardHidden === Configuration.KEYBOARDHIDDEN_NO) {
        Toast.makeText(this, "No keyboard", Toast.LENGTH_SHORT).show()
    }
}

Java

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks whether a keyboard is available
    if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_YES) {
        Toast.makeText(this, "Keyboard available", Toast.LENGTH_SHORT).show();
    } else if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO){
        Toast.makeText(this, "No keyboard", Toast.LENGTH_SHORT).show();
    }
}

अगर आपको इन कॉन्फ़िगरेशन के आधार पर अपने ऐप्लिकेशन को अपडेट नहीं करना है तो आप onConfigurationChanged() को लागू नहीं कर सकते. इसमें इस मामले में, कॉन्फ़िगरेशन परिवर्तन से पहले उपयोग किए जा रहे सभी संसाधन अब भी उपयोग किए जा रहे हैं, और आपने सिर्फ़ अपनी गतिविधि के रीस्टार्ट होने से बचा लिया हो. उदाहरण के लिए, कोई टीवी ऐप्लिकेशन ब्लूटूथ कीबोर्ड के अटैच होने या अलग होने पर, हो सकता है कि वह प्रतिक्रिया न करे.

बरकरार रखने की स्थिति

इस तकनीक का इस्तेमाल करने पर, आपको इस अवधि को सामान्य गतिविधि की लाइफ़साइकल. ऐसा इन वजहों से होता है:

  • हटाए न जा सकने वाले बदलाव: कॉन्फ़िगरेशन में ऐसे बदलाव जिन्हें रोका नहीं जा सकता अपना ऐप्लिकेशन रीस्टार्ट करें.
  • प्रोसेस डेथ प्रोसेस: आपका ऐप्लिकेशन यह मैनेज कर पाएगा कि सिस्टम की ओर से शुरू की गई कार्रवाई को कैसे मैनेज किया जाए पूरी तरह बंद हो जाता है. अगर उपयोगकर्ता आपका ऐप्लिकेशन छोड़ देता है और ऐप्लिकेशन सिस्टम, ऐप्लिकेशन को बंद कर सकता है.
के दौरान हर एलिमेंट का एक संसाधन होना चाहिए.

Jetpack Compose में कॉन्फ़िगरेशन में बदलाव पर प्रतिक्रिया दें

Jetpack Compose आपका ऐप्लिकेशन, कॉन्फ़िगरेशन में हुए बदलावों के हिसाब से ज़्यादा आसानी से प्रतिक्रिया देने में मदद करता है. हालांकि, अगर आपने कॉन्फ़िगरेशन में किए गए सभी बदलावों के लिए, Activity मनोरंजन की सुविधा को बंद कर दिया है, तो यह सुविधा जहां यह है ऐसा करना मुमकिन है, तो आपके ऐप्लिकेशन को अब भी सही तरीके से हैंडल करना होगा कॉन्फ़िगरेशन में बदलाव किए गए हैं.

Configuration ऑब्जेक्ट, Compose के यूज़र इंटरफ़ेस (यूआई) के क्रम में उपलब्ध है. इसके साथ LocalConfiguration कंपोज़िशन लोकल. जब भी यह बदलता है, LocalConfiguration.current रीकंपोज़ से पढ़े जाने वाले कंपोज़ेबल फ़ंक्शन. इसके लिए कंपोज़िशन के काम करने के तरीके के बारे में जानकारी, स्थानीय भाषा में उपलब्ध ComposeLocal के साथ डेटा एक्सपोर्ट करेगा.

उदाहरण

यहां दिए गए उदाहरण में, कंपोज़ेबल में किसी तारीख को एक खास फ़ॉर्मैट में दिखाया गया है. कंपोज़ेबल, कॉल करके सिस्टम की स्थान-भाषा के कॉन्फ़िगरेशन में हुए बदलावों पर प्रतिक्रिया देता है LocalConfiguration.current के साथ ConfigurationCompat.getLocales().

@Composable
fun DateText(year: Int, dayOfYear: Int) {
    val dateTimeFormatter = DateTimeFormatter.ofPattern(
        "MMM dd",
        ConfigurationCompat.getLocales(LocalConfiguration.current)[0]
    )
    Text(
        dateTimeFormatter.format(LocalDate.ofYearDay(year, dayOfYear))
    )
}

स्थान-भाषा में बदलाव होने पर, Activity के मनोरंजन से बचने के लिए, Activity कंपोज़ कोड को स्थान-भाषा के कॉन्फ़िगरेशन में किए गए बदलावों से ऑप्ट आउट करना होगा. ऐसा करने के लिए, आपको android:configChanges को locale|layoutDirection पर सेट करें.

कॉन्फ़िगरेशन में बदलाव: अहम कॉन्सेप्ट और सबसे सही तरीके

कॉन्फ़िगरेशन पर काम करते समय, आपको इन मुख्य सिद्धांतों की जानकारी होनी चाहिए बदलाव:

  • कॉन्फ़िगरेशन: डिवाइस कॉन्फ़िगरेशन से यह तय होता है कि यूज़र इंटरफ़ेस (यूआई) कैसा दिखता है जैसे कि ऐप्लिकेशन का डिसप्ले साइज़, स्थान-भाषा या सिस्टम की थीम.
  • कॉन्फ़िगरेशन में बदलाव: उपयोगकर्ता के इंटरैक्शन से कॉन्फ़िगरेशन बदलते हैं. इसके लिए उदाहरण के लिए, उपयोगकर्ता डिवाइस की सेटिंग बदल सकता है या वह खुद तय कर सकता है कि वह डिवाइस से किस तरह इंटरैक्ट करता है डिवाइस के साथ. इसे रोकने का कोई तरीका नहीं है कॉन्फ़िगरेशन में बदलाव किए गए हैं.
  • Activity मनोरंजन: कॉन्फ़िगरेशन में हुए बदलावों की वजह से, Activity मनोरंजन हुआ डिफ़ॉल्ट रूप से. यह एक बिल्ट-इन टेक्नोलॉजी है. इसकी मदद से, नया कॉन्फ़िगरेशन.
  • Activity का नुकसान: Activity मनोरंजन की वजह से सिस्टम तबाह हो जाता है पुराना Activity इंस्टेंस खोलें और इसकी जगह नया इंस्टेंस बनाएं. पुराना इंस्टेंस यह है अब पुराना हो गया है. इसके किसी भी बचे हुए संदर्भ से मेमोरी लीक हो जाती है, या क्रैश हो जाता है.
  • स्थिति: पुराने Activity इंस्टेंस की स्थिति, नए Activity इंस्टेंस क्योंकि ये दो अलग-अलग ऑब्जेक्ट इंस्टेंस हैं. सुरक्षित करें ऐप्लिकेशन और उपयोगकर्ता की स्थिति के बारे में जानें, जैसा कि यूज़र इंटरफ़ेस (यूआई) की स्थितियां सेव करना में बताया गया है.
  • ऑप्ट-आउट करना: किसी तरह के कॉन्फ़िगरेशन के लिए, गतिविधि को फिर से चालू करने की सुविधा से ऑप्ट-आउट करना बदलाव एक संभावित ऑप्टिमाइज़ेशन है. इसके लिए ज़रूरी है कि आपका ऐप्लिकेशन नए कॉन्फ़िगरेशन के हिसाब से, सही तरीके से अपडेट हो जाता है.

एक अच्छा उपयोगकर्ता अनुभव देने के लिए, इन सबसे सही तरीकों पर ध्यान दें:

  • कॉन्फ़िगरेशन में बार-बार होने वाले बदलावों के लिए तैयार रहें: यह न सोचें कि कॉन्फ़िगरेशन में बदलाव ऐसा बहुत कम होता है या कभी नहीं होता. भले ही, एपीआई लेवल, डिवाइस का नाप या आकार या यूज़र इंटरफ़ेस (यूआई) टूलकिट कैसा भी हो. जब कोई उपयोगकर्ता कॉन्फ़िगरेशन में बदलाव करता है, तो वह उम्मीद करता है कि ऐप्लिकेशन अपडेट हो जाएगा और नए कॉन्फ़िगरेशन के साथ ठीक से काम करना जारी रखेगा.
  • स्थिति बनाए रखें: Activity फिर से शामिल करते समय उपयोगकर्ता की स्थिति न खोएं होता है. यूज़र इंटरफ़ेस (यूआई) की स्थितियां सेव करें में बताए गए तरीके से राज्य को सेव रखें.
  • समस्या को तुरंत हल करने के लिए ऑप्ट-आउट करने से बचें: Activity मनोरंजन के लिए ऑप्ट-आउट न करें ताकि राज्य को होने वाले नुकसान से बचाया जा सके. मनोरंजन की गतिविधियों के लिए ऑप्ट-आउट करने के लिए, यह ज़रूरी है आप परिवर्तन को संभालने का वादा पूरा करते हैं, और आप अब भी कॉन्फ़िगरेशन में हुए अन्य बदलावों की वजह से Activity फिर से होने की वजह से स्थिति, प्रोसेस मौत हो जाए या ऐप्लिकेशन बंद कर दिया जाए. Activity को पूरी तरह से बंद करना नामुमकिन है मनोरंजन. यूज़र इंटरफ़ेस (यूआई) की स्थितियां सेव करें में बताए गए तरीके से राज्य को सेव रखें.
  • कॉन्फ़िगरेशन में होने वाले बदलावों से न बचें: ओरिएंटेशन पर कोई पाबंदी न लगाएं, आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) या साइज़ बदलने की सुविधा, ताकि कॉन्फ़िगरेशन में बदलाव न हो और Activity मनोरंजन. इससे उन उपयोगकर्ताओं पर बुरा असर पड़ता है जो उनका पसंदीदा तरीका चुनें.

साइज़ के हिसाब से कॉन्फ़िगरेशन में होने वाले बदलावों को मैनेज करना

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

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

साइज़ के हिसाब से कॉन्फ़िगरेशन में बदलाव करने के लिए, गतिविधि को फिर से चालू करने पर पाबंदी लगाएं

जब साइज़ के हिसाब से कॉन्फ़िगरेशन में बदलावों के लिए, Activity को फिर से ऐक्सेस करने की सुविधा बंद की जाती है, तो सिस्टम, Activity को फिर से नहीं बनाता. इसके बजाय, उसे Activity.onConfigurationChanged(). अटैच किए गए व्यू पर कॉल आता है View.onConfigurationChanged().

साइज़ पर आधारित कॉन्फ़िगरेशन में बदलाव करने के लिए, Activity मनोरंजन को बंद कर दिया गया है, जब आपके पास है android:configChanges="screenSize|smallestScreenSize|orientation|screenLayout" को अपलोड करने की ज़रूरत नहीं है.

साइज़ के हिसाब से कॉन्फ़िगरेशन में बदलाव करने के लिए, गतिविधि को फिर से चालू करने की अनुमति दें

Android 7.0 (एपीआई लेवल 24) और उसके बाद वाले वर्शन पर, Activity मनोरंजन सिर्फ़ साइज़ पर आधारित होता है साइज़ में ज़्यादा बदलाव होने पर, कॉन्फ़िगरेशन बदल जाता है. जब सिस्टम काम नहीं करता ज़रूरत के मुताबिक साइज़ न होने की वजह से, Activity को फिर से बनाएं. ऐसा हो सकता है कि सिस्टम कॉल करे Activity.onConfigurationChanged() और View.onConfigurationChanged() का इस्तेमाल करें.

Activity और View से जुड़ी कुछ चेतावनियां हैं, जिन्हें ध्यान में रखना चाहिए Activity के न होने पर कॉलबैक:

  • Android 11 (एपीआई लेवल 30) से Android 13 (एपीआई लेवल 33) तक के वर्शन पर, Activity.onConfigurationChanged() पर कॉल नहीं किया गया है.
  • एक जानी-पहचानी समस्या है, जिसमें हो सकता है कि View.onConfigurationChanged() मौजूद न हो कुछ मामलों में, Android 12L (एपीआई लेवल 32) और Android 12 Android 13 (एपीआई लेवल 33). ज़्यादा जानकारी के लिए, यह सार्वजनिक समस्या देखें. इसलिए, इस समस्या को Android 13 और Android 14 के नए वर्शन में ठीक कर दिया गया है.

यह ऐसे कोड के लिए है जो साइज़ के हिसाब से कॉन्फ़िगरेशन को सुनने पर निर्भर करता है तो हमारा सुझाव है कि आप ओवरराइड किए गए विकल्प के साथ View यूटिलिटी का इस्तेमाल करें View.onConfigurationChanged() के बजाय Activity मनोरंजन या Activity.onConfigurationChanged().