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

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

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

یکی از مهم‌ترین مفاهیم در توسعه اپلیکیشن‌های اندرویدی، مفهوم Activity یا اکتیویتی است. تقریباً هر برنامه اندرویدی از چندین Activity تشکیل شده و کاربران هنگام کار با اپلیکیشن دائماً بین آن‌ها جابه‌جا می‌شوند.

اگر بخواهیم ساده توضیح دهیم، هر صفحه‌ای که کاربر در یک اپلیکیشن اندروید مشاهده می‌کند معمولاً یک Activity است. برای مثال:

  • صفحه ورود
  • صفحه تنظیمات
  • صفحه پروفایل
  • صفحه جزئیات محصول

همگی می‌توانند Activity باشند.

در این مقاله، به‌صورت کامل با Activity در برنامه نویسی اندروید آشنا می‌شویم، چرخه حیات آن را بررسی می‌کنیم و مثال‌های عملی خواهیم دید.

Activity چیست؟

در Android، Activity یکی از اصلی‌ترین Componentهای برنامه است که وظیفه مدیریت رابط کاربری و تعامل با کاربر را بر عهده دارد.

هر Activity:

  • یک صفحه مستقل محسوب می‌شود
  • Lifecycle مخصوص خود را دارد
  • می‌تواند شامل Viewها و Fragmentها باشد

نقش Activity در اپلیکیشن

Activity:

  • رابط کاربری را نمایش می‌دهد
  • ورودی کاربر را مدیریت می‌کند
  • با ViewModel و Data ارتباط برقرار می‌کند
  • صفحات مختلف برنامه را کنترل می‌کند

ساخت اولین Activity

در Android Studio هنگام ساخت پروژه، معمولاً یک Activity پیش‌فرض ایجاد می‌شود.

مثال ساده Activity

class MainActivity : AppCompatActivity() {

    override fun onCreate(
        savedInstanceState: Bundle?
    ) {

        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)
    }
}

توضیح بخش‌های مهم

AppCompatActivity

کلاس پایه Activityهای مدرن اندروید است.

onCreate

اولین متدی است که هنگام ایجاد Activity اجرا می‌شود.

setContentView

Layout مربوط به Activity را نمایش می‌دهد.

Lifecycle اکتیویتی چیست؟

یکی از مهم‌ترین مفاهیم اندروید:
چرخه حیات Activity (Activity Lifecycle)

است.

سیستم‌عامل اندروید Activityها را بر اساس وضعیت برنامه مدیریت می‌کند.

چرخه حیات اکتیویتی ها در اندروید

متدهای اصلی Lifecycle

1️⃣ onCreate()

زمان ایجاد اولیه Activity.

override fun onCreate(
    savedInstanceState: Bundle?
)

2️⃣ onStart()

زمانی که Activity قابل مشاهده می‌شود.

3️⃣ onResume()

زمانی که کاربر می‌تواند با Activity تعامل کند.

4️⃣ onPause()

وقتی Activity بخشی از فوکوس را از دست می‌دهد.

مثلاً:

  • نمایش Dialog
  • باز شدن Activity دیگر

5️⃣ onStop()

وقتی Activity دیگر دیده نمی‌شود.

6️⃣ onDestroy()

قبل از حذف Activity از حافظه.

چرخه حیات Activity به‌صورت ساده

onCreate()
   ↓
onStart()
   ↓
onResume()
   ↓
[Activity Running]
   ↓
onPause()
   ↓
onStop()
   ↓
onDestroy()

چرا Lifecycle مهم است؟

اگر Lifecycle را اشتباه مدیریت کنید:

  • Memory Leak ایجاد می‌شود
  • مصرف RAM بالا می‌رود
  • برنامه کرش می‌کند

انتقال بین Activityها

برای جابه‌جایی بین صفحات از:

  • Intent

استفاده می‌شود.

مثال انتقال به Activity دیگر

val intent =
    Intent(this, DetailActivity::class.java)

startActivity(intent)

ارسال داده بین Activityها

ارسال داده

intent.putExtra("name", "Ali")

دریافت داده

val name =
    intent.getStringExtra("name")

ثبت Activity در Manifest

هر Activity باید داخل:
AndroidManifest.xml

ثبت شود.

مثال:

<activity
    android:name=".DetailActivity"/>

تفاوت Activity و Fragment

Activity Fragment
صفحه کامل بخشی از صفحه
Lifecycle مستقل وابسته به Activity
سنگین‌تر سبک‌تر

بهترین روش مدرن چیست؟

امروزه معمولاً:

  • یک Activity
  • چند Fragment

استفاده می‌شود.

یا در:
Jetpack Compose

از Navigation Compose استفاده می‌شود.

مدیریت State در Activity

برای جلوگیری از از دست رفتن داده‌ها هنگام:

  • چرخش صفحه
  • تغییر Configuration

معمولاً از:

  • ViewModel
  • SavedStateHandle

استفاده می‌شود.

استفاده از ViewModel داخل Activity

private val vm: MainViewModel
    by viewModels()

اجرای عملیات Async در Activity

برای عملیات غیرهمزمان:

lifecycleScope.launch {

}

چرا lifecycleScope مهم است؟

Coroutineها با Lifecycle هماهنگ می‌شوند.

مدیریت Memory Leak در Activity

اشتباه رایج ❌

نگه داشتن Reference به Activity داخل Singleton.

راه‌حل ✅

استفاده از:

  • ApplicationContext
  • WeakReference

ذخیره وضعیت Activity

onSaveInstanceState

override fun onSaveInstanceState(
    outState: Bundle
)

استفاده از Toolbar در Activity

setSupportActionBar(toolbar)

بازگشت به Activity قبلی

finish()

Activity در Jetpack Compose

در Compose معمولاً Activity فقط Host است.

مثال:

setContent {

    MyApp()
}

بهترین روش‌ها در استفاده از Activity

✅ Activityها را سبک نگه دارید

منطق اصلی داخل:

  • ViewModel
  • Repository

باشد.

✅ Lifecycle را مدیریت کنید

✅ از ViewBinding استفاده کنید

✅ عملیات سنگین روی Main Thread اجرا نکنید

اشتباهات رایج

❌ نوشتن Business Logic داخل Activity

❌ عدم مدیریت Lifecycle

❌ استفاده زیاد از چندین Activity

آینده Activity در اندروید

با ظهور:

  • Fragment
  • Compose
  • Navigation Component

نقش Activity کمتر شده، اما همچنان بخش مهمی از سیستم اندروید است.

جمع‌بندی

Activity یکی از اساسی‌ترین Componentهای Android است که مدیریت صفحات و تعامل با کاربر را بر عهده دارد.

در این مقاله یاد گرفتیم:

  • Activity چیست
  • Lifecycle چگونه کار می‌کند
  • چگونه بین Activityها جابه‌جا شویم
  • چگونه داده ارسال کنیم
  • و بهترین روش‌های استفاده از Activity چیست

اگر قصد دارید برنامه‌نویسی اندروید را حرفه‌ای یاد بگیرید، درک کامل Activity و Lifecycle کاملاً ضروری است.

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

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