मोबाइल ऐप का जीवन चक्र यह निर्धारित करता है कि ऐप लॉन्च होने, मिनिमाइज़ होने, बैकग्राउंड से वापस आने और बंद होने पर कैसे व्यवहार करता है। इस लेख में हम App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle और LifecycleOwner के बारे में जानेंगे। मेमोरी लीक, डेटा हानि और ऐप के गलत व्यवहार को रोकने के लिए इन प्रक्रियाओं को समझना महत्वपूर्ण है। अधिक जानकारी के लिए आधिकारिक Android Activity Lifecycle दस्तावेज़ीकरण देखें।
मुख्य बातें
व्यक्तिगत स्क्रीन के जीवन चक्र में जाने से पहले, पूरे ऐप के जीवन चक्र को समझना महत्वपूर्ण है। iOS में, ऐप पाँच अवस्थाओं से गुज़रता है: Not Running (चालू नहीं), Inactive (बैकग्राउंड में, घटनाएँ प्राप्त नहीं करता), Active (सक्रिय), Background (बैकग्राउंड में, कोड निष्पादित हो रहा है) और Suspended (बैकग्राउंड में, कोड रोक दिया गया है)। इन अवस्थाओं का प्रबंधन AppDelegate में applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground और applicationWillTerminate विधियों के माध्यम से किया जाता है।
Android में, इसका समकक्ष Application Lifecycle है, जिसे Application.ActivityLifecycleCallbacks इंटरफ़ेस के माध्यम से ट्रैक किया जाता है। हालाँकि, Android Activity — एक व्यक्तिगत ऐप स्क्रीन — के जीवन चक्र पर अधिक ध्यान केंद्रित करता है। ऐसा इसलिए है क्योंकि Android ऐप में कई Activities हो सकती हैं, प्रत्येक का अपना चक्र होता है।
Android में आधुनिक दृष्टिकोण lifecycle-process लाइब्रेरी से ProcessLifecycleOwner का उपयोग करना है। यह किसी विशिष्ट Activity से बंधे बिना पूरी प्रक्रिया की स्थिति को ट्रैक करने की अनुमति देता है। iOS में, ऐप स्थिति को ट्रैक करने के लिए UISceneDelegate (iOS 13 से) या AppDelegate का उपयोग किया जाता है। SceneDelegate iPad पर कई विंडो (multiwindow) को संभालता है। App Lifecycle को समझना IT Sectr के लिए बैकग्राउंड सिंक्रोनाइज़ेशन, स्ट्रीमिंग और VoIP कॉल वाले ऐप विकसित करते समय विशेष रूप से महत्वपूर्ण है।
Activity Android ऐप का मूल घटक है, जो एक स्क्रीन का प्रतिनिधित्व करता है। Activity का एक स्पष्ट रूप से परिभाषित जीवन चक्र होता है जो उपयोगकर्ता क्रियाओं और सिस्टम घटनाओं (स्क्रीन रोटेशन, इनकमिंग कॉल, कम मेमोरी) के जवाब में ऑपरेटिंग सिस्टम द्वारा प्रबंधित किया जाता है।
| विधि | विवरण | क्या करें |
|---|---|---|
| onCreate | Activity बनने पर एक बार कॉल होता है | UI आरंभीकरण, findViewById, ViewModel सेटअप |
| onStart | Activity दृश्यमान हो जाती है | एनिमेशन शुरू करें, BroadCastReceiver पंजीकृत करें |
| onResume | Activity को इनपुट फ़ोकस मिलता है | कैमरा, सेंसर, एनिमेशन शुरू करें |
| onPause | Activity फ़ोकस खो देती है (आंशिक रूप से दृश्यमान) | ड्राफ्ट सहेजें, एनिमेशन रोकें |
| onStop | Activity दृश्यमान नहीं है | संसाधन मुक्त करें, अपडेट रोकें |
| onDestroy | Activity नष्ट हो जाती है | सभी संदर्भ साफ़ करें, LiveData से सदस्यता रद्द करें |
| onRestart | onStop के बाद onStart से पहले कॉल होता है | पुनः आरंभीकरण |
महत्वपूर्ण: अस्थायी स्थिति सहेजने के लिए onSaveInstanceState onStop से पहले कॉल होता है। पुनर्स्थापना onCreate में Bundle savedInstanceState के माध्यम से या ViewModel में SavedStateHandle के माध्यम से होती है। जीवन चक्र के उचित प्रबंधन के बिना, स्क्रीन घुमाने पर ऐप सभी असंग्रहीत डेटा खो देगा।
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("draft", draftText)
}
override fun onDestroy() {
super.onDestroy()
// Отписка от всех подписок
}
}
Jetpack Compose में, Activity का जीवन चक्र अपरिवर्तित रहता है, लेकिन Compose अतिरिक्त उपकरण प्रदान करता है: LifecycleOwner के माध्यम से Lifecycle-aware composition, नष्ट होने पर स्वचालित संसाधन सफाई के लिए LifecycleEventEffect और DisposableEffect इफ़ेक्ट।
Android में Fragment Activity के अंदर रहता है और इसका अपना जीवन चक्र होता है, जो आंशिक रूप से Activity से ओवरलैप होता है लेकिन नई विधियाँ जोड़ता है। Fragments को Activity को नष्ट किए बिना जोड़ा, बदला और हटाया जा सकता है, जो उन्हें अधिक लचीला बनाता है लेकिन अधिक जटिल भी।
Fragment Lifecycle की मुख्य विधियाँ: onAttach — Fragment Activity से जुड़ा (पहला कॉल); onCreate — डेटा आरंभीकरण; onCreateView — View निर्माण; onViewCreated — View बन गई, UI कॉन्फ़िगर किया जा सकता है; onStart — Fragment दृश्यमान; onResume — Fragment फ़ोकस में; onPause — Fragment फ़ोकस खोता है; onStop — Fragment दृश्यमान नहीं; onDestroyView — View नष्ट हो जाती है; onDestroy — Fragment नष्ट हो जाता है; onDetach — Fragment Activity से अलग हो जाता है।
Activity से मुख्य अंतर: onCreateView और onDestroyView को कई बार कॉल किया जा सकता है (उदाहरण के लिए, TabLayout स्विच करते समय), जबकि onCreate एक बार कॉल होता है। तदनुसार, View का आरंभीकरण onViewCreated में किया जाना चाहिए, onCreateView में नहीं। View से संबंधित संसाधनों (जैसे RecyclerView एडेप्टर) को onDestroyView में साफ़ किया जाना चाहिए।
UIViewController iOS में स्क्रीन प्रबंधित करने के लिए आधार वर्ग है। इसका जीवन चक्र विधियों के एक क्रम से बना है जिसे UIKit स्वचालित रूप से कॉल करता है। इस चक्र को समझना उचित UI आरंभीकरण, डेटा प्रबंधन और मेमोरी हैंडलिंग के लिए महत्वपूर्ण है।
| विधि | कब कॉल होती है | विशिष्ट उपयोग |
|---|---|---|
| loadView | जब View Controller अपना View पदानुक्रम लोड करता है | स्टोरीबोर्ड के बिना कस्टम आरंभीकरण |
| viewDidLoad | View के मेमोरी में लोड होने के बाद (एक बार) | UI सेटअप, प्रारंभिक डेटा लोड करना |
| viewWillAppear | स्क्रीन पर View दिखने से पहले | डेटा अपडेट करना, सूचनाओं की सदस्यता लेना |
| viewDidAppear | स्क्रीन पर View दिखने के बाद | एनिमेशन शुरू करना, ट्रैकिंग एनिमेशन शुरू करना |
| viewWillDisappear | स्क्रीन से View गायब होने से पहले | स्थिति सहेजना, सूचनाओं से सदस्यता रद्द करना |
| viewDidDisappear | स्क्रीन से View गायब होने के बाद | एनिमेशन रोकना, संसाधन मुक्त करना |
| dealloc | जब View Controller नष्ट होता है | सभी संसाधन मुक्त करना |
महत्वपूर्ण: viewDidLoad View Controller के जीवन में केवल एक बार कॉल होता है। हर बार दिखने पर डेटा अपडेट करने के लिए viewWillAppear का उपयोग करें। यदि आप viewWillAppear में NotificationCenter की सदस्यता लेते हैं, तो मेमोरी लीक से बचने के लिए viewDidDisappear में सदस्यता रद्द करना सुनिश्चित करें।
SwiftUI View संरचनाओं के माध्यम से Views के जीवन चक्र का प्रबंधन करता है। कॉलबैक विधियों के बजाय, SwiftUI onAppear और onDisappear मॉडिफ़ायर का उपयोग करता है। वैश्विक ऐप स्थितियों के लिए, App Lifecycle का उपयोग App और Scene प्रोटोकॉल के माध्यम से किया जाता है। SwiftUI स्थिति के आधार पर Views के निर्माण और विनाश को स्वचालित रूप से प्रबंधित करता है, जो विकास को सरल बनाता है लेकिन View की पहचान और जीवनकाल को समझने की आवश्यकता होती है।
struct ContentView: View {
var body: some View {
Text("Hello")
.onAppear {
print("View появилась")
}
.onDisappear {
print("View исчезла")
}
}
}
LifecycleOwner Android Architecture Components का एक इंटरफ़ेस है जो एक ऐसी वस्तु को चिह्नित करता है जिसका जीवन चक्र होता है (Activity, Fragment)। LifecycleObserver एक इंटरफ़ेस है जो किसी वस्तु को LifecycleOwner की घटनाओं की सदस्यता लेने की अनुमति देता है। साथ में वे आधुनिक Android विकास में प्रतिक्रियाशील जीवन चक्र प्रबंधन की नींव बनाते हैं।
onStart/onStop में स्पष्ट रूप से विधियों को कॉल करने के बजाय, DefaultLifecycleObserver (पुराने LifecycleObserver और @OnLifecycleEvent एनोटेशन के प्रतिस्थापन) का उपयोग करने की अनुशंसा की जाती है। यह Google द्वारा ViewModel और अन्य घटकों के लिए प्रचारित दृष्टिकोण है जिन्हें Activity या Fragment के सीधे संदर्भों के बिना जीवन चक्र पर प्रतिक्रिया करने की आवश्यकता होती है।
class MyObserver : DefaultLifecycleObserver {
override fun onStart(owner: LifecycleOwner) {
// Подписка на обновления
}
override fun onStop(owner: LifecycleOwner) {
// Отписка
}
}
IT Sectr में, हम सभी Android प्रोजेक्ट्स में LifecycleOwner का उपयोग करते हैं। ViewModel viewModelScope और lifecycleScope के माध्यम से Activity के LifecycleOwner की सदस्यता लेता है, जो Activity नष्ट होने पर कोरूटीन को स्वचालित रूप से रद्द करने की गारंटी देता है। यह मेमोरी लीक को रोकता है और कोड को साफ़ और सुरक्षित बनाता है।
अक्सर पूछे जाने वाले प्रश्न
Activity छह अवस्थाओं से गुज़रती है: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).
क्रम: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear। viewDidLoad एक बार कॉल होता है।
LifecycleOwner Android Architecture Components का एक घटक है जो Activity या Fragment के जीवन चक्र का स्वामी होता है। LifecycleObserver के माध्यम से घटनाओं की सदस्यता लेने की अनुमति देता है।
iOS ऐप पाँच अवस्थाओं से गुज़रता है: Not Running, Inactive, Active, Background, Suspended। UIApplicationDelegate के माध्यम से संक्रमण प्रबंधित किए जाते हैं।
Saved State Android का स्क्रीन रोटेशन या प्रक्रिया पुनर्निर्माण पर Activity/Fragment स्थिति को संरक्षित करने का तंत्र है। यह onSaveInstanceState और SavedStateHandle का उपयोग करता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।