Xamarin.Android
ऐप जीवनचक्र - Xamarin.Andorid
खोज…
परिचय
Xamarin.Android एप्लिकेशन जीवनचक्र सामान्य एंड्रॉइड ऐप की तरह ही है। जीवनचक्र के बारे में बात करते समय हमें इसके बारे में बात करनी होगी: अनुप्रयोग जीवनचक्र, गतिविधि जीवनचक्र और भटकाव जीवनचक्र।
नीचे मैं एक अच्छा वर्णन और उनका उपयोग करने का तरीका प्रदान करने का प्रयास करूँगा। मैंने यह दस्तावेज़ आधिकारिक एंड्रॉइड और ज़मारिन प्रलेखन से प्राप्त किया और नीचे टिप्पणी अनुभाग में प्रदान किए गए कई सहायक वेब संसाधन।
टिप्पणियों
Android एप्लिकेशन जीवनचक्र के बारे में अपने ज्ञान को विस्तृत करने के लिए दिलचस्प लिंक:
https://developer.android.com/reference/android/app/Activity.html
http://www.vogella.com/tutorials/AndroidLifeCycle/article.html
https://github.com/xxv/android-lifecycle
https://developer.android.com/guide/components/fragments.html
https://developer.android.com/guide/components/activities/activity-lifecycle.html
अनुप्रयोग जीवनचक्र
सबसे पहले आपको पता होना चाहिए कि आप Android.Application class को बढ़ा सकते हैं ताकि आप ऐप जीवनचक्र से संबंधित दो महत्वपूर्ण तरीकों तक पहुँच सकें:
OnCreate - जब आवेदन शुरू हो रहा है, तो किसी भी अन्य एप्लिकेशन ऑब्जेक्ट्स बनाए जाने से पहले कॉल किया जाता है (जैसे MainActivity)।
OnTerminate - यह विधि उत्सर्जित प्रक्रिया वातावरण में उपयोग के लिए है। इसे कभी भी उत्पादन एंड्रॉइड डिवाइस पर नहीं बुलाया जाएगा, जहां प्रक्रियाओं को बस उन्हें मारकर हटा दिया जाता है; ऐसा करते समय कोई उपयोगकर्ता कोड (इस कॉलबैक सहित) निष्पादित नहीं किया जाता है। प्रलेखन से: https://developer.android.com/reference/android/app/Application.html#onTerminate ()
Xamarin.Android एप्लिकेशन में आप नीचे प्रस्तुत तरीके से एप्लिकेशन क्लास का विस्तार कर सकते हैं। अपनी परियोजना में "MyApplication.cs" नामक नई कक्षा जोड़ें:
[Application]
public class MyApplication : Application
{
public MyApplication(IntPtr handle, JniHandleOwnership ownerShip) : base(handle, ownerShip)
{
}
public override void OnCreate()
{
base.OnCreate();
}
public override void OnTerminate()
{
base.OnTerminate();
}
}
जैसा कि आपने ऊपर लिखा है कि आप OnCreate पद्धति का उपयोग कर सकते हैं। आप उदाहरण के लिए स्थानीय डेटाबेस को इनिशियलाइज़ कर सकते हैं या कुछ अतिरिक्त कॉन्फ़िगरेशन सेट कर सकते हैं।
और भी तरीके हैं जिन्हें ओवरराइड किया जा सकता है जैसे: OnConfigurationChanged या OnLowMemory।
गतिविधि जीवनचक्र
गतिविधि जीवनचक्र काफी अधिक जटिल है। जैसा कि आप जानते हैं कि गतिविधि एंड्रॉइड ऐप में एकल पृष्ठ है जहां उपयोगकर्ता इसके साथ सहभागिता कर सकता है।
नीचे दिए गए आरेख पर आप देख सकते हैं कि एंड्रॉइड गतिविधि जीवनचक्र कैसा दिखता है:
जैसा कि आप देख सकते हैं कि गतिविधि जीवनचक्र का विशिष्ट प्रवाह है। मोबाइल एप्लिकेशन में आपके पास प्रत्येक गतिविधि वर्ग में निश्चित तरीके होते हैं जो विशिष्ट जीवनचक्र के टुकड़े को संभालते हैं:
[Activity(Label = "LifecycleApp", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Log.Debug("OnCreate", "OnCreate called, Activity components are being created");
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.MainActivity);
}
protected override void OnStart()
{
Log.Debug("OnStart", "OnStart called, App is Active");
base.OnStart();
}
protected override void OnResume()
{
Log.Debug("OnResume", "OnResume called, app is ready to interact with the user");
base.OnResume();
}
protected override void OnPause()
{
Log.Debug("OnPause", "OnPause called, App is moving to background");
base.OnPause();
}
protected override void OnStop()
{
Log.Debug("OnStop", "OnStop called, App is in the background");
base.OnStop();
}
protected override void OnDestroy()
{
base.OnDestroy();
Log.Debug("OnDestroy", "OnDestroy called, App is Terminating");
}
}
आधिकारिक Android प्रलेखन में अच्छा विवरण है:
एक गतिविधि का पूरा जीवनकाल ऑनस्ट्रीट (बंडल) के लिए पहली कॉल के बीच होता है जो ऑनस्टेस्ट्र (() के लिए एक अंतिम कॉल के माध्यम से होता है। एक गतिविधि onCreate () में "वैश्विक" राज्य के सभी सेटअप करेगी, और शेष सभी संसाधनों को onDestroy () में जारी करेगी। उदाहरण के लिए, यदि उसके पास नेटवर्क से डेटा डाउनलोड करने के लिए बैकग्राउंड में एक थ्रेड चल रहा है, तो वह ऑनक्रिएट () में उस थ्रेड को बना सकता है और फिर ऑनड्रेसट्रॉय () में थ्रेड को रोक सकता है।
किसी गतिविधि का दृश्यमान जीवनकाल ऑनस्टार्ट () पर कॉल के बीच तब तक होता है जब तक कि onStop () के अनुरूप कॉल न हो जाए। इस समय के दौरान उपयोगकर्ता ऑन-स्क्रीन गतिविधि देख सकता है, हालांकि यह अग्रभूमि में नहीं हो सकता है और उपयोगकर्ता के साथ बातचीत कर सकता है। इन दो तरीकों के बीच आप उन संसाधनों को बनाए रख सकते हैं जो उपयोगकर्ता को गतिविधि दिखाने के लिए आवश्यक हैं। उदाहरण के लिए, आप अपने यूआई को प्रभावित करने वाले परिवर्तनों की निगरानी के लिए onStart () में एक ब्रॉडकास्टरीवर को पंजीकृत कर सकते हैं और इसे onStop में अनरजिस्टर्ड कर सकते हैं () जब उपयोगकर्ता अब यह नहीं देखता कि आप क्या प्रदर्शित कर रहे हैं। जैसे ही गतिविधि उपयोगकर्ता के लिए दृश्यमान और छिपी हो जाती है, onStart () और onStop () विधियों को कई बार कहा जा सकता है।
एक गतिविधि का अग्रभूमि जीवनकाल onResume () पर कॉल के बीच होता है, जब तक कि onPause () के अनुरूप कॉल न हो जाए। इस समय के दौरान गतिविधि अन्य सभी गतिविधियों के सामने है और उपयोगकर्ता के साथ बातचीत कर रही है। एक गतिविधि अक्सर फिर से शुरू और रुकी हुई अवस्थाओं के बीच जा सकती है - उदाहरण के लिए जब डिवाइस सो जाता है, जब एक गतिविधि परिणाम दिया जाता है, जब एक नया इरादा दिया जाता है - तो इन विधियों में कोड काफी हल्का होना चाहिए।
खुशबू जीवनचक्र
जैसा कि आप जानते हैं कि आपके पास एक गतिविधि हो सकती है लेकिन इसमें अलग-अलग टुकड़े अंतर्निहित हैं। यही कारण है कि डेवलपर्स के लिए टुकड़ा जीवनचक्र भी महत्वपूर्ण है।
नीचे दिए गए आरेख पर आप देख सकते हैं कि एंड्रॉइड टुकड़ा जीवनचक्र कैसा दिखता है:
जैसा कि आधिकारिक एंड्रॉइड प्रलेखन में वर्णित है, आपको कम से कम तीन तरीकों से लागू करना चाहिए:
OnCreate - टुकड़ा बनाते समय सिस्टम इसे कॉल करता है। अपने कार्यान्वयन के भीतर, आपको उस खंड के आवश्यक घटकों को इनिशियलाइज़ करना चाहिए जिसे आप तब बनाए रखना चाहते हैं जब टुकड़ा रोक दिया जाता है या रोक दिया जाता है, फिर से शुरू किया जाता है।
OnCreateView - जब यह पहली बार अपने उपयोगकर्ता इंटरफ़ेस को खींचने के लिए समय है, तो सिस्टम इसे कॉल करता है। अपने टुकड़े के लिए एक यूआई आकर्षित करने के लिए, आपको इस विधि से एक दृश्य वापस करना होगा जो आपके टुकड़े के लेआउट का मूल है। यदि आप एक UI प्रदान नहीं करते हैं तो आप अशक्त लौट सकते हैं।
ऑनपॉज - सिस्टम इस तरीके को पहला संकेत कहता है कि उपयोगकर्ता टुकड़ा छोड़ रहा है (हालांकि इसका मतलब यह नहीं है कि टुकड़ा नष्ट हो रहा है)। यह आमतौर पर होता है जहाँ आपको कोई भी परिवर्तन करना चाहिए जो कि वर्तमान उपयोगकर्ता सत्र से परे होना चाहिए (क्योंकि उपयोगकर्ता वापस नहीं आ सकता है)।
यहाँ Xamarin में नमूना कार्यान्वयन है। थायराइड:
public class MainFragment : Fragment
{
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your fragment here
// You should initialize essential components of the fragment
// that you want to retain when the fragment is paused or stopped, then resumed.
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// Use this to return your custom view for this Fragment
// The system calls this when it's time for the fragment to draw its user interface for the first time.
var mainView = inflater.Inflate(Resource.Layout.MainFragment, container, false);
return mainView;
}
public override void OnPause()
{
// The system calls this method as the first indication that the user is leaving the fragment
base.OnPause();
}
}
यदि आप अलग-अलग राज्यों को संभालना चाहते हैं तो बेशक आप यहां अतिरिक्त तरीके जोड़ सकते हैं।
GitHub पर पूरा नमूना
यदि आप नीचे वर्णित विधियों के साथ आधार परियोजना प्राप्त करना चाहते हैं तो आप मेरे GitHub से Xamarin.Android एप्लिकेशन टेम्पलेट डाउनलोड कर सकते हैं। आप इसके लिए उदाहरण पा सकते हैं:
- आवेदन जीवन चक्र के तरीके
- गतिविधि जीवन चक्र के तरीके
- खुशबू जीवनचक्र विधियाँ
https://github.com/Daniel-Krzyczkowski/XamarinAndroid/tree/master/AndroidLifecycle/LifecycleApp