برنامه‌نویسی اندروید

اکتیویتی در اندروید

اکتیویتی ها در اندروید

یکی از مهم‌ترین و پایه‌ای‌ترین مفاهیم در برنامه‌نویسی اندروید، 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 کاملاً ضروری است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *