اکتیویتی در اندروید
یکی از مهمترین و پایهایترین مفاهیم در برنامهنویسی اندروید، Activity (اکتیویتی) است. اکتیویتی در واقع یک صفحه یا رابط کاربری مستقل در اپلیکیشن اندرویدی محسوب میشود که کاربران میتوانند با آن تعامل داشته باشند. هر زمان که کاربر برنامهای را باز میکند، مشاهده میکند یا عملی را در آن انجام میدهد، معمولاً در حال کار با یک Activity است.
به عنوان مثال در یک اپلیکیشن فروشگاهی، صفحه ورود، صفحه لیست محصولات، صفحه جزئیات محصول و صفحه سبد خرید میتوانند هر کدام به عنوان یک Activity جداگانه پیادهسازی شوند. هنگامی که کاربر بین این صفحات جابهجا میشود، در واقع بین Activity های مختلف حرکت میکند.
اکتیویتیها نقش اصلی را در مدیریت رابط کاربری و تعامل کاربر با برنامه ایفا میکنند. هر Activity دارای یک چرخه حیات (Activity Lifecycle) است که وضعیتهای مختلف آن مانند ایجاد شدن، نمایش داده شدن، متوقف شدن و از بین رفتن را مدیریت میکند. آشنایی با چرخه حیات اکتیویتی یکی از مهمترین مباحث برنامهنویسی اندروید محسوب میشود؛ زیرا مدیریت صحیح منابع، دادهها و عملکرد اپلیکیشن به آن وابسته است.
در زبان کاتلین معمولاً هر اکتیویتی از کلاس AppCompatActivity ارثبری میکند و رابط کاربری آن از طریق فایلهای XML یا Jetpack Compose طراحی میشود. فایل MainActivity که پس از ایجاد یک پروژه جدید اندروید مشاهده میکنید، اولین اکتیویتی برنامه است و هنگام اجرای اپلیکیشن به کاربر نمایش داده میشود.
به طور خلاصه، اکتیویتی را میتوان به عنوان یک صفحه از اپلیکیشن در نظر گرفت که مسئول نمایش رابط کاربری و دریافت تعاملات کاربر است و تقریباً تمام اپلیکیشنهای اندرویدی از یک یا چند اکتیویتی تشکیل شدهاند.
اگر بخواهیم ساده توضیح دهیم، هر صفحهای که کاربر در یک اپلیکیشن اندروید مشاهده میکند معمولاً یک Activity است. برای مثال:
- صفحه ورود
- صفحه تنظیمات
- صفحه پروفایل
- صفحه جزئیات محصول
همگی میتوانند Activity باشند.
در این مقاله، بهصورت کامل با Activity در برنامه نویسی اندروید آشنا میشویم، چرخه حیات آن را بررسی میکنیم و مثالهای عملی خواهیم دید.
آشنایی با اکتیویتی در اندروید
در اندروید، اکتیویتی یکی از اصلیترین Componentهای برنامه است که وظیفه مدیریت رابط کاربری و تعامل با کاربر را بر عهده دارد.
هر اکتیویتی:
- یک صفحه مستقل محسوب میشود
- Lifecycle مخصوص خود را دارد
- میتواند شامل Viewها و Fragmentها باشد
نقش اکتیویتی در اپلیکیشن
اکتیویتی:
- رابط کاربری را نمایش میدهد
- ورودی کاربر را مدیریت میکند
- با ViewModel و Data ارتباط برقرار میکند
- صفحات مختلف برنامه را کنترل میکند
ساخت اولین اکتیویتی در اندروید
در Android Studio هنگام ساخت پروژه، معمولاً یک Activity پیشفرض ایجاد میشود.
مثال ساده اکتیویتی
class MainActivity : AppCompatActivity() {
override fun onCreate(
savedInstanceState: Bundle?
) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
توضیح بخشهای مهم
AppCompatActivity
کلاس پایه Activity های مدرن اندروید است.
onCreate
اولین متدی است که هنگام ایجاد اکتیویتی در اندروید اجرا میشود.
setContentView
Layout مربوط به Activity را نمایش میدهد.
Lifecycle اکتیویتی چیست؟
یکی از مهمترین مفاهیم اندروید:
چرخه حیات اکتیویتی(Activity Lifecycle)
است.
سیستمعامل اندروید اکتیویتی ها را بر اساس وضعیت برنامه مدیریت میکند.

متدهای اصلی Lifecycle
1️⃣ onCreate()
زمان ایجاد اولیه اکتیویتی.
override fun onCreate(
savedInstanceState: Bundle?
)
2️⃣ onStart()
زمانی که اکتیویتی قابل مشاهده میشود.
3️⃣ onResume()
زمانی که کاربر میتواند با اکتیویتی تعامل کند.
4️⃣ onPause()
وقتی اکتیویتی بخشی از فوکوس را از دست میدهد.
مثلاً:
- نمایش Dialog
- باز شدن Activity دیگر
5️⃣ onStop()
وقتی Activity دیگر دیده نمیشود.
6️⃣ onDestroy()
قبل از حذف اکتیویتی از حافظه.
چرخه حیات اکتیویتی بهصورت ساده
onCreate()
↓
onStart()
↓
onResume()
↓
[Activity Running]
↓
onPause()
↓
onStop()
↓
onDestroy()
چرا Lifecycle مهم است؟
اگر Lifecycle را اشتباه مدیریت کنید:
- Memory Leak ایجاد میشود
- مصرف RAM بالا میرود
- برنامه کرش میکند
انتقال بین Activityها
برای جابهجایی بین صفحات از:
- Intent
استفاده میشود.
مثال انتقال به اکتیویتی دیگر
val intent =
Intent(this, DetailActivity::class.java)
startActivity(intent)
ارسال داده بین Activityها
ارسال داده
intent.putExtra("name", "Ali")
دریافت داده
val name =
intent.getStringExtra("name")
ثبت اکتیویتی در Manifest
هر اکتیویتی باید داخل:
AndroidManifest.xml
ثبت شود.
مثال:
<activity
android:name=".DetailActivity"/>
تفاوت اکتیویتی و فرگمنت
| Activity | Fragment |
|---|---|
| صفحه کامل | بخشی از صفحه |
| Lifecycle مستقل | وابسته به Activity |
| سنگینتر | سبکتر |
بهترین روش مدرن چیست؟
امروزه معمولاً:
- یک اکتیویتی
- چند فرگمنت
استفاده میشود.
یا در:
Jetpack Compose
از Navigation Compose استفاده میشود.
مدیریت State در اکتیویتی
برای جلوگیری از از دست رفتن دادهها هنگام:
- چرخش صفحه
- تغییر Configuration
معمولاً از:
- ViewModel
- SavedStateHandle
استفاده میشود.
استفاده از ViewModel داخل اکتیویتی
private val vm: MainViewModel
by viewModels()
اجرای عملیات Async در اکتیویتی
برای عملیات غیرهمزمان:
lifecycleScope.launch {
}
چرا lifecycleScope مهم است؟
Coroutineها با Lifecycle هماهنگ میشوند.
مدیریت Memory Leak در اکتیویتی
اشتباه رایج ❌
نگه داشتن Reference به Activity داخل Singleton.
راهحل ✅
استفاده از:
- ApplicationContext
- WeakReference
ذخیره وضعیت اکتیویتی
onSaveInstanceState
override fun onSaveInstanceState(
outState: Bundle
)
استفاده از Toolbar در اکتیویتی
setSupportActionBar(toolbar)
بازگشت به اکتیویتی قبلی
finish()
اکتیویتی در Jetpack Compose
در Compose معمولاً اکتیویتی فقط Host است.
مثال:
setContent {
MyApp()
}
بهترین روشها در استفاده از اکتیویتی
✅ اکتیویتی ها را سبک نگه دارید
منطق اصلی داخل:
- ViewModel
- Repository
باشد.
✅ Lifecycle را مدیریت کنید
✅ از ViewBinding استفاده کنید
✅ عملیات سنگین روی Main Thread اجرا نکنید
اشتباهات رایج
❌ نوشتن Business Logic داخل Activity
❌ عدم مدیریت Lifecycle
❌ استفاده زیاد از چندین Activity
آینده اکتیویتی در اندروید
با ظهور:
- Fragment
- Compose
- Navigation Component
نقش Activity کمتر شده، اما همچنان بخش مهمی از سیستم اندروید است.
جمعبندی
Activity یکی از اساسیترین Componentهای Android است که مدیریت صفحات و تعامل با کاربر را بر عهده دارد.
در این مقاله یاد گرفتیم:
- Activity چیست
- Lifecycle چگونه کار میکند
- چگونه بین Activityها جابهجا شویم
- چگونه داده ارسال کنیم
- و بهترین روشهای استفاده از Activity چیست
اگر قصد دارید برنامهنویسی اندروید را حرفهای یاد بگیرید، درک کامل Activity و Lifecycle کاملاً ضروری است.