Activity — Android एप्लिकेशन का एक मूल घटक है जो उपयोगकर्ता इंटरफ़ेस के साथ एक स्क्रीन प्रस्तुत करता है। सिस्टम सख्त जीवन चक्र के माध्यम से स्क्रीन का प्रबंधन करता है — कॉलबैक onCreate, onResume और onDestroy। प्रत्येक Activity AndroidManifest.xml में घोषित की जाती है और Intent के माध्यम से शुरू की जाती है। Android के इतिहास के बारे में और पढ़ें Google के आधिकारिक दस्तावेज़ में।
मुख्य बातें
Activity — Android एप्लिकेशन का एक मुख्य घटक है जो उपयोगकर्ता के साथ बातचीत के लिए एक विंडो प्रदान करता है। प्रत्येक Activity एक अलग स्क्रीन प्रबंधित करता है: कार्य सूची, लॉगिन फ़ॉर्म, फ़ोटो व्यूअर। Android सिस्टम अनुरोध पर Activity बनाता है और जब अन्य एप्लिकेशन को मेमोरी की आवश्यकता होती है तो इसे नष्ट कर देता है।
Activity पहली बार Android 1.0 (2008) में दिखाई दिया और इंटरफ़ेस का मुख्य निर्माण खंड बना हुआ है। Google (2026) के अनुसार, Google Play में 98% एप्लिकेशन में कम से कम एक Activity होता है। आधुनिक आर्किटेक्चर में, Google एक Activity के साथ कई Fragments की सिफारिश करता है, हालांकि क्लासिक मल्टी-स्क्रीन एप्लिकेशन एक सामान्य प्रथा बनी हुई है।
Activity stack (back stack) — कार्य स्टैक जो नेविगेशन इतिहास संग्रहीत करता है। जब उपयोगकर्ता "पीछे" दबाता है, तो वर्तमान Activity नष्ट हो जाती है और पिछली Activity पुनर्स्थापित हो जाती है। सिस्टम स्वचालित रूप से स्टैक का प्रबंधन करता है, लेकिन डेवलपर launchMode और Intent फ़्लैग के माध्यम से व्यवहार को नियंत्रित कर सकता है।
Activity का जीवन चक्र अवस्थाओं और कॉलबैक का एक सेट है जिसके माध्यम से एक स्क्रीन निर्माण से विनाश तक गुज़रती है। Lifecycle को समझना महत्वपूर्ण है: अवस्थाओं के गलत प्रबंधन से मेमोरी लीक, डेटा हानि और एप्लिकेशन क्रैश होते हैं।
Android सिस्टम सख्त क्रम में कॉलबैक को कॉल करता है। डेवलपर संसाधनों को आरंभ करने, डेटा सहेजने और मेमोरी मुक्त करने के लिए आवश्यक विधियों को ओवरराइड करता है। प्रत्येक कॉलबैक का एक संगत जोड़ा होता है: onCreate ↔ onDestroy, onStart ↔ onStop, onResume ↔ onPause.
| कॉलबैक | उद्देश्य | डेवलपर कार्रवाई |
|---|---|---|
| onCreate | Activity बनाने पर कॉल किया जाता है | UI आरंभीकरण, ViewModel की सदस्यता |
| onStart | Activity दृश्यमान हो जाता है | एनिमेशन, कैमरा, GPS शुरू करना |
| onResume | Activity इनपुट फ़ोकस प्राप्त करता है | वीडियो, टाइमर फिर से शुरू करना |
| onPause | Activity फ़ोकस खो देता है | ड्राफ़्ट सहेजना, एनिमेशन रोकना |
| onStop | Activity दूसरी स्क्रीन से छिपा हुआ है | भारी संसाधन मुक्त करना |
| onDestroy | Activity नष्ट हो जाता है | सदस्यताएँ साफ़ करना, Closeable |
Activity की चार अवस्थाएँ होती हैं: Running (onResume सक्रिय), Paused (दृश्यमान लेकिन फ़ोकस के बिना), Stopped (दृश्यमान नहीं), Destroyed (नष्ट)। सिस्टम मेमोरी की कमी होने पर Stopped अवस्था में Activity को समाप्त कर सकता है — डेटा onSaveInstanceState में सहेजा जाना चाहिए।
आइए Kotlin उदाहरण के साथ Activity जीवन चक्र की तीन मुख्य विधियों को देखें। onCreate — प्रवेश बिंदु, एक बार कॉल किया जाता है। यहाँ setContentView के माध्यम से लेआउट बाइंडिंग, RecyclerView आरंभीकरण, LiveData सदस्यता होती है। onStart — Activity उपयोगकर्ता को दृश्यमान हो जाता है। onResume — Activity फ़ोकस प्राप्त करता है और बातचीत के लिए तैयार होता है।
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView = findViewById<RecyclerView>(R.id.rv_items)
recyclerView.layoutManager = LinearLayoutManager(this)
loadItems()
}
override fun onStart() {
super.onStart()
startLocationUpdates()
}
override fun onResume() {
super.onResume()
resumeVideoPlayer()
}
}उदाहरण में, onCreate RecyclerView को आरंभ करता है और डेटा लोड करता है। onStart जियोलोकेशन अपडेट शुरू करता है — एक संसाधन जो केवल तभी काम करना चाहिए जब स्क्रीन दृश्यमान हो। onResume उस वीडियो को फिर से शुरू करता है जो onPause में रोका गया था। यह पृथक्करण पृष्ठभूमि में अनावश्यक कार्य को रोकता है।
प्रत्येक Activity को AndroidManifest.xml फ़ाइल में घोषित किया जाना चाहिए। पंजीकरण के बिना, सिस्टम स्क्रीन नहीं ढूँढ पाएगा और ActivityNotFoundException फेंकेगा। मैनिफ़ेस्ट में क्लास का नाम, थीम, ओरिएंटेशन, launchMode और Intent फ़िल्टर निर्दिष्ट किए जाते हैं।
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/Theme.MyApp">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DetailActivity"
android:parentActivityName=".MainActivity" />
</application>exported फ़्लैग यह निर्धारित करता है कि क्या अन्य एप्लिकेशन Activity शुरू कर सकते हैं। मुख्य स्क्रीन के लिए exported=true, आंतरिक स्क्रीन के लिए — false। parentActivityName विशेषता मानक "ऊपर" नेविगेशन (Up Navigation) को सक्षम करती है।
Intent — एक ऑब्जेक्ट जो निष्पादित की जाने वाली क्रिया का वर्णन करता है। Activity के संदर्भ में, Intent का उपयोग डेटा स्थानांतरण के साथ दूसरी स्क्रीन शुरू करने के लिए किया जाता है। Intent स्पष्ट (एक विशिष्ट क्लास निर्दिष्ट करता है) और अंतर्निहित (एक क्रिया निर्दिष्ट करता है, सिस्टम उपयुक्त घटक चुनता है) हो सकता है।
// स्पष्ट Intent — DetailActivity को डेटा के साथ शुरू करना
val intent = Intent(this, DetailActivity::class.java).apply {
putExtra("item_id", itemId)
putExtra("item_name", itemName)
}
startActivity(intent)
// DetailActivity में डेटा प्राप्त करना
val itemId = intent.getLongExtra("item_id", 0L)
val itemName = intent.getStringExtra("item_name") ?: ""शुरू की गई Activity से परिणाम प्राप्त करने के लिए Activity Result API का उपयोग किया जाता है, जिसने पुराने startActivityForResult को बदल दिया। नया API टाइप-सेफ़, घोषणात्मक है और Jetpack Compose के साथ काम करता है।
private val getResult = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val data = result.data?.getStringExtra("result_key")
}
}
fun openPicker() {
val intent = Intent(this, PickerActivity::class.java)
getResult.launch(intent)
}स्क्रीन घुमाने या कॉन्फ़िगरेशन बदलने पर, Android Activity को पुनः बनाता है — क्रमिक रूप से onDestroy और onCreate को कॉल करता है। स्थिति सहेजने के बिना, उपयोगकर्ता दर्ज किया गया डेटा, स्क्रॉल स्थिति और चयनित आइटम खो देता है। Android इस समस्या को हल करने के लिए दो प्रणालियाँ प्रदान करता है: onSaveInstanceState और ViewModel।
onSaveInstanceState onDestroy कॉल करने से पहले Bundle में सरल डेटा सहेजता है। Jetpack का ViewModel Activity के पुनर्निर्माण को सहन करता है और मेमोरी में डेटा संग्रहीत करता है, जो जटिल ऑब्जेक्ट और नेटवर्क अनुरोधों के लिए अधिक कुशल है।
class MainActivity : AppCompatActivity() {
private val viewModel: MainViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// ViewModel स्वचालित रूप से डेटा सहेजता है
viewModel.items.observe(this) { items ->
updateAdapter(items)
}
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("scroll_position", recyclerView.computeVerticalScrollOffset())
}
}Google का आधुनिक दृष्टिकोण — Single Activity आर्किटेक्चर है जिसमें एक Activity और कई Fragments होते हैं। एप्लिकेशन एक MainActivity का उपयोग करता है, और सभी नेविगेशन NavHostFragment के माध्यम से Navigation Component द्वारा संभाला जाता है। लाभ: केंद्रीकृत नेविगेशन, प्रति स्क्रीन साझा ViewModel, Deep Links का सही संचालन।
Jetpack Navigation Component back stack प्रबंधन, संक्रमण एनिमेशन और आर्गुमेंट पासिंग को स्वचालित करता है। NavHostFragment Activity लेआउट में रखा जाता है, और नेविगेशन ग्राफ़ (NavGraph) सभी स्क्रीन और उनके बीच कनेक्शन का वर्णन करता है। यह दृष्टिकोण Google द्वारा नई परियोजनाओं के लिए अनुशंसित है और Material Design सिद्धांतों का पालन करता है।
class MainActivity : AppCompatActivity() {
private val navController by lazy {
findViewById<NavHostFragment>(R.id.nav_host_fragment)
.navController
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// AppBar के लिए NavigationUI सेट करना
setupActionBarWithNavController(navController)
}
override fun onSupportNavigateUp() =
navController.navigateUp() || super.onSupportNavigateUp()
}अक्सर पूछे जाने वाले प्रश्न
Activity — अपने स्वयं के जीवन चक्र के साथ एक पूर्ण एप्लिकेशन स्क्रीन। Fragment — Activity के अंदर UI का एक हिस्सा जो Activity के पुनर्निर्माण को सहन करता है और उसके Lifecycle पर निर्भर करता है। Activity अनिवार्य है, Fragment वैकल्पिक है।
कोई सीमा नहीं है। प्रत्येक स्क्रीन आमतौर पर एक अलग Activity प्रस्तुत करती है। सरल एप्लिकेशन के लिए एक पर्याप्त है, मल्टी-स्क्रीन के लिए — 5 से 20 तक। Google एक Activity के साथ कई Fragments की सिफारिश करता है।
launchMode यह निर्धारित करता है कि कार्य स्टैक में Activity कैसे बनाई जाती है। चार मोड: standard (नया इंस्टेंस बनाया जाता है), singleTop, singleTask (प्रति कार्य एक इंस्टेंस) और singleInstance (पृथक कार्य)। मोड AndroidManifest.xml में सेट किया जाता है।
Intent के माध्यम से — extras (putExtra) वाला एक ऑब्जेक्ट जिसमें प्रिमिटिव, स्ट्रिंग, Parcelable या Serializable हो सकते हैं। वापसी संचार के लिए Activity Result API का उपयोग किया जाता है — startActivityForResult का आधुनिक टाइप-सेफ़ प्रतिस्थापन।
Configuration Change — कॉन्फ़िगरेशन बदलने (स्क्रीन घुमाना, भाषा बदलना, कीबोर्ड) पर Activity का पुनर्निर्माण। सिस्टम onDestroy → onCreate कॉल करता है। डेटा सहेजने के लिए onSaveInstanceState या Jetpack का ViewModel उपयोग करें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें