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 ختم ہو جاتی ہے اور پچھلی بحال ہو جاتی ہے۔ نظام خود بخود ڈھیر کا انتظام کرتا ہے، لیکن ڈویلپر 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 کا جدید نقطہ نظر — ایک Activity اور متعدد Fragments کے ساتھ Single Activity آرکیٹیکچر ہے۔ ایپلیکیشن ایک 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں