Activity — কী, Android-এ অ্যাপ স্ক্রিন এবং এর Lifecycle

লেখক: IT Sectr প্রকাশিত: 2026-02-22 পড়ার সময়: 7 মিনিট

Activity — Android অ্যাপ্লিকেশনের একটি মৌলিক উপাদান যা ইউজার ইন্টারফেস সহ একটি স্ক্রিন উপস্থাপন করে। সিস্টেম একটি কঠোর জীবনচক্রের মাধ্যমে স্ক্রিনগুলি পরিচালনা করে — কলব্যাক onCreate, onResume এবং onDestroy। প্রতিটি Activity AndroidManifest.xml-এ ঘোষণা করা হয় এবং Intent-এর মাধ্যমে চালু করা হয়। Android-এর ইতিহাস সম্পর্কে আরও পড়ুন Google-এর অফিসিয়াল ডকুমেন্টেশন-এ।

মূল বিষয়

  • Activity — Android উপাদান যা UI সহ একটি স্ক্রিন উপস্থাপন করে। Lifecycle-এর মাধ্যমে পরিচালিত
  • জীবনচক্র 6টি কলব্যাক অন্তর্ভুক্ত করে: onCreate, onStart, onResume, onPause, onStop, onDestroy
  • Intent — Activity চালু করার এবং স্ক্রিনের মধ্যে ডেটা স্থানান্তরের একটি প্রক্রিয়া
  • Manifest — AndroidManifest.xml-এ প্রতিটি Activity-র বাধ্যতামূলক নিবন্ধন
  • ViewModel — Activity পুনরায় তৈরি করার সময় ডেটা সংরক্ষণের জন্য Jetpack উপাদান

Activity কী?

Activity — Android অ্যাপ্লিকেশনের একটি মূল উপাদান যা ইউজারের সাথে মিথস্ক্রিয়ার জন্য একটি উইন্ডো সরবরাহ করে। প্রতিটি Activity একটি পৃথক স্ক্রিন পরিচালনা করে: টাস্ক তালিকা, লগইন ফর্ম, ফটো ভিউয়ার। Android সিস্টেম অনুরোধে একটি Activity তৈরি করে এবং যখন অন্য অ্যাপ্লিকেশনের মেমোরির প্রয়োজন হয় তখন এটি ধ্বংস করে।

Activity প্রথম Android 1.0 (2008)-এ আবির্ভূত হয়েছিল এবং ইন্টারফেসের প্রধান বিল্ডিং ব্লক হিসাবে রয়ে গেছে। Google (2026) অনুসারে, Google Play-তে 98% অ্যাপ্লিকেশনে কমপক্ষে একটি Activity থাকে। আধুনিক আর্কিটেকচারে, Google একাধিক Fragment সহ একটি Activity সুপারিশ করে, তবে ক্লাসিক মাল্টি-স্ক্রিন অ্যাপ্লিকেশন একটি সাধারণ অভ্যাস হিসাবে রয়ে গেছে।

Activity stack (back stack) — টাস্ক স্ট্যাক যা নেভিগেশন ইতিহাস সংরক্ষণ করে। যখন ইউজার "পিছনে" টিপেন, বর্তমান Activity ধ্বংস হয় এবং পূর্ববর্তীটি পুনরুদ্ধার করা হয়। সিস্টেম স্বয়ংক্রিয়ভাবে স্ট্যাক পরিচালনা করে, তবে ডেভেলপার launchMode এবং Intent ফ্ল্যাগের মাধ্যমে আচরণ নিয়ন্ত্রণ করতে পারে।

Activity-র জীবনচক্র

Activity-র জীবনচক্র হল অবস্থা এবং কলব্যাকের একটি সেট যা একটি স্ক্রিন সৃষ্টি থেকে ধ্বংস পর্যন্ত অতিক্রম করে। Lifecycle বোঝা অত্যন্ত গুরুত্বপূর্ণ: ভুল অবস্থা পরিচালনা মেমোরি লিক, ডেটা হারানো এবং অ্যাপ্লিকেশন ক্র্যাশের দিকে নিয়ে যায়।

Android সিস্টেম কঠোর ক্রমে কলব্যাক কল করে। ডেভেলপার সম্পদ আরম্ভ করতে, ডেটা সংরক্ষণ করতে এবং মেমোরি মুক্ত করতে প্রয়োজনীয় পদ্ধতি ওভাররাইড করে। প্রতিটি কলব্যাকের একটি সংশ্লিষ্ট জোড়া রয়েছে: onCreate ↔ onDestroy, onStart ↔ onStop, onResume ↔ onPause।

কলব্যাকউদ্দেশ্যডেভেলপারের কাজ
onCreateActivity তৈরি হলে কল করা হয়UI আরম্ভ, ViewMenu-তে সাবস্ক্রাইব
onStartActivity দৃশ্যমান হয়অ্যানিমেশন, ক্যামেরা, GPS শুরু
onResumeActivity ইনপুট ফোকাস পায়ভিডিও, টাইমার পুনরায় শুরু
onPauseActivity ফোকাস হারায়খসড়া সংরক্ষণ, অ্যানিমেশন বন্ধ
onStopActivity অন্য স্ক্রিন দ্বারা লুকানোভারী সম্পদ মুক্ত করা
onDestroyActivity ধ্বংস হয়সাবস্ক্রিপশন পরিষ্কার, Closeable

Activity-র অবস্থা

Activity-র চারটি অবস্থা রয়েছে: Running (onResume সক্রিয়), Paused (দৃশ্যমান কিন্তু ফোকাস ছাড়া), Stopped (দৃশ্যমান নয়), Destroyed (ধ্বংস)। সিস্টেম মেমোরির অভাবে Stopped অবস্থায় Activity বন্ধ করতে পারে — onSaveInstanceState-এ ডেটা সংরক্ষণ করতে হবে।

জীবনচক্র পদ্ধতি: onCreate, onStart, onResume

আসুন Kotlin উদাহরণ সহ Activity জীবনচক্র-র তিনটি মূল পদ্ধতি দেখি। onCreate — প্রবেশ বিন্দু, একবার কল করা হয়। এখানে setContentView-এর মাধ্যমে লেআউট বাইন্ডিং, RecyclerView আরম্ভ, LiveData সাবস্ক্রিপশন হয়। onStart — Activity ইউজারের কাছে দৃশ্যমান হয়। onResume — Activity ফোকাস পায় এবং মিথস্ক্রিয়ার জন্য প্রস্তুত হয়।

kotlin
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-এ থামানো হয়েছিল। এই পৃথকীকরণ পেছনে অপ্রয়োজনীয় কাজ প্রতিরোধ করে।

AndroidManifest.xml-এ Activity ঘোষণা

প্রতিটি Activity AndroidManifest.xml ফাইলে ঘোষণা করতে হবে। নিবন্ধন ছাড়া, সিস্টেম স্ক্রিন খুঁজে পাবে না এবং ActivityNotFoundException নিক্ষেপ করবে। ম্যানিফেস্টে ক্লাসের নাম, থিম, ওরিয়েন্টেশন, launchMode এবং Intent ফিল্টার নির্দিষ্ট করা হয়।

xml
<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 — একটি অবজেক্ট যা সম্পাদন করার জন্য একটি ক্রিয়া বর্ণনা করে। Activity-র প্রসঙ্গে, Intent ডেটা স্থানান্তর সহ অন্য স্ক্রিন চালু করতে ব্যবহৃত হয়। Intent স্পষ্ট (একটি নির্দিষ্ট ক্লাস নির্দিষ্ট করে) এবং অন্তর্নিহিত (একটি ক্রিয়া নির্দিষ্ট করে, সিস্টেম উপযুক্ত উপাদান নির্বাচন করে) হতে পারে।

kotlin
// স্পষ্ট 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-এর সাথে কাজ করে।

kotlin
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 পুনর্নির্মাণ সহ্য করে এবং মেমোরিতে ডেটা সংরক্ষণ করে, যা জটিল অবজেক্ট এবং নেটওয়ার্ক অনুরোধের জন্য আরও কার্যকর।

kotlin
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())
    }
}

Single Activity আর্কিটেকচার এবং Jetpack

Google-এর আধুনিক পদ্ধতি — Single Activity আর্কিটেকচার একটি Activity এবং একাধিক Fragment সহ। অ্যাপ্লিকেশন একটি MainActivity ব্যবহার করে, এবং সমস্ত নেভিগেশন NavHostFragment-এর মাধ্যমে Navigation Component দ্বারা পরিচালিত হয়। সুবিধা: কেন্দ্রীভূত নেভিগেশন, প্রতি স্ক্রিনে শেয়ার্ড ViewModel, Deep Links-এর সঠিক পরিচালনা।

Jetpack Navigation Component back stack ব্যবস্থাপনা, ট্রানজিশন অ্যানিমেশন এবং আর্গুমেন্ট পাসিং স্বয়ংক্রিয় করে। NavHostFragment Activity লেআউটে স্থাপন করা হয়, এবং নেভিগেশন গ্রাফ (NavGraph) সমস্ত স্ক্রিন এবং তাদের মধ্যে সংযোগ বর্ণনা করে। এই পদ্ধতি Google দ্বারা নতুন প্রকল্পের জন্য সুপারিশকৃত এবং Material Design নীতি অনুসরণ করে।

kotlin
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 — নিজস্ব জীবনচক্র সহ একটি পূর্ণ অ্যাপ্লিকেশন স্ক্রিন। Fragment — Activity-র ভিতরে UI-র একটি অংশ যা Activity পুনর্নির্মাণ সহ্য করে এবং তার Lifecycle-এর উপর নির্ভর করে। Activity বাধ্যতামূলক, Fragment ঐচ্ছিক।

একটি অ্যাপ্লিকেশনে কতগুলি Activity থাকতে পারে?

কোনো সীমা নেই। প্রতিটি স্ক্রিন সাধারণত একটি পৃথক Activity উপস্থাপন করে। সাধারণ অ্যাপ্লিকেশনের জন্য একটি যথেষ্ট, মাল্টি-স্ক্রিনের জন্য — 5 থেকে 20। Google একাধিক Fragment সহ একটি Activity সুপারিশ করে।

Activity-তে launchMode কী?

launchMode নির্ধারণ করে কিভাবে টাস্ক স্ট্যাকে Activity তৈরি হয়। চারটি মোড: standard (নতুন ইনস্ট্যান্স তৈরি হয়), singleTop, singleTask (প্রতি টাস্কে একটি ইনস্ট্যান্স) এবং singleInstance (পৃথক টাস্ক)। মোড AndroidManifest.xml-এ সেট করা হয়।

Activities-এর মধ্যে ডেটা কীভাবে স্থানান্তর করবেন?

Intent-এর মাধ্যমে — extras (putExtra) সহ একটি অবজেক্ট যাতে প্রিমিটিভ, স্ট্রিং, Parcelable বা Serializable থাকতে পারে। ফেরত যোগাযোগের জন্য Activity Result API ব্যবহার করা হয় — startActivityForResult-এর আধুনিক টাইপ-সেফ প্রতিস্থাপন।

Android-এ Configuration Change কী?

Configuration Change — কনফিগারেশন পরিবর্তনে (স্ক্রিন ঘোরানো, ভাষা পরিবর্তন, কীবোর্ড) Activity পুনর্নির্মাণ। সিস্টেম onDestroy → onCreate কল করে। ডেটা সংরক্ষণের জন্য onSaveInstanceState বা Jetpack-এর ViewModel ব্যবহার করুন।

সারসংক্ষেপ

  • Activity — একটি মৌলিক Android উপাদান যা জীবনচক্রের মাধ্যমে পরিচালিত ইউজার ইন্টারফেস সহ একটি স্ক্রিন উপস্থাপন করে
  • জীবনচক্র ছয়টি কলব্যাক নিয়ে গঠিত: onCreate, onStart, onResume, onPause, onStop, onDestroy — প্রতিটির কঠোর উদ্দেশ্য রয়েছে
  • Intent স্পষ্ট এবং অন্তর্নিহিত কলের মাধ্যমে Activity লঞ্চ এবং স্ক্রিনের মধ্যে ডেটা স্থানান্তর প্রদান করে
  • AndroidManifest.xml-এ নাম, থিম, ওরিয়েন্টেশন এবং ফিল্টার সহ প্রতিটি Activity-র বাধ্যতামূলক নিবন্ধন প্রয়োজন
  • ViewModel Jetpack থেকে Activity পুনর্নির্মাণে ডেটা সংরক্ষণ করে, onSaveInstanceState-এ ম্যানুয়াল সংরক্ষণ প্রতিস্থাপন করে
  • Single Activity আর্কিটেকচার Navigation Component সহ Google-এর Android প্রকল্পের জন্য সুপারিশকৃত আধুনিক মান
  • launchMode টাস্ক স্ট্যাকে Activity আচরণ নিয়ন্ত্রণ করে: বিচ্ছিন্ন স্ক্রিনের জন্য standard থেকে singleInstance পর্যন্ত

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন