মোবাইল ডেভেলপমেন্টে জীবনচক্র: এটি কী, কী ধাপ এবং কীভাবে কাজ করে

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

মোবাইল অ্যাপের জীবনচক্র নির্ধারণ করে যে অ্যাপটি চালু, ছোট, ব্যাকগ্রাউন্ড থেকে ফিরে আসা এবং বন্ধ করার সময় কীভাবে আচরণ করে। এই নিবন্ধে আমরা App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle এবং LifecycleOwner নিয়ে আলোচনা করব। মেমোরি লিক, ডেটা হারানো এবং অ্যাপের ভুল আচরণ প্রতিরোধের জন্য এই প্রক্রিয়াগুলি বোঝা অত্যন্ত গুরুত্বপূর্ণ। আরও বিস্তারিত জানতে Android Activity Lifecycle-এর অফিসিয়াল ডকুমেন্টেশন দেখুন।

মূল পয়েন্ট

  • Activity Lifecycle (Android) ৭টি মেথড অন্তর্ভুক্ত করে: onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) ক্রমানুসারে কল হয়: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle-এর ৫টি অবস্থা আছে: Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle Activity-এর সাথে যুক্ত কিন্তু এর নিজস্ব মেথড আছে: onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android) LifecycleObserver-এর মাধ্যমে জীবনচক্র ইভেন্টে সাবস্ক্রাইব করার অনুমতি দেয়

অ্যাপ জীবনচক্র (App Lifecycle)

পৃথক স্ক্রিনের জীবনচক্রে যাওয়ার আগে, সম্পূর্ণ অ্যাপের জীবনচক্র বোঝা গুরুত্বপূর্ণ। iOS-এ, অ্যাপটি পাঁচটি অবস্থার মধ্য দিয়ে যায়: Not Running (চালু নয়), Inactive (ব্যাকগ্রাউন্ডে, ইভেন্ট গ্রহণ করে না), Active (সক্রিয়), Background (ব্যাকগ্রাউন্ডে, কোড এক্সিকিউট হচ্ছে) এবং Suspended (ব্যাকগ্রাউন্ডে, কোড স্থগিত)। এই অবস্থাগুলি AppDelegate-এ applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground এবং applicationWillTerminate মেথডের মাধ্যমে পরিচালিত হয়।

Android-এ, এর সমতুল্য হল Application Lifecycle, যা Application.ActivityLifecycleCallbacks ইন্টারফেসের মাধ্যমে ট্র্যাক করা হয়। তবে, Android Activity — একটি পৃথক অ্যাপ স্ক্রিন —-এর জীবনচক্রের উপর বেশি মনোযোগ দেয়। কারণ একটি Android অ্যাপে একাধিক Activities থাকতে পারে, প্রতিটির নিজস্ব চক্র থাকে।

Android-এ আধুনিক পদ্ধতি হল lifecycle-process লাইব্রেরি থেকে ProcessLifecycleOwner ব্যবহার করা। এটি কোনো নির্দিষ্ট Activity-তে আবদ্ধ না হয়ে সম্পূর্ণ প্রক্রিয়ার অবস্থা ট্র্যাক করার অনুমতি দেয়। iOS-এ, অ্যাপ অবস্থা ট্র্যাক করতে UISceneDelegate (iOS 13 থেকে) বা AppDelegate ব্যবহার করা হয়। SceneDelegate iPad-এ একাধিক উইন্ডো (multiwindow) পরিচালনা করে। App Lifecycle বোঝা IT Sectr-এর জন্য ব্যাকগ্রাউন্ড সিঙ্ক্রোনাইজেশন, স্ট্রিমিং এবং VoIP কল সহ অ্যাপ ডেভেলপ করার সময় বিশেষভাবে গুরুত্বপূর্ণ।

Android-এ Activity Lifecycle

Activity হল Android অ্যাপের মৌলিক উপাদান, যা একটি স্ক্রিন উপস্থাপন করে। Activity-র একটি স্পষ্টভাবে সংজ্ঞায়িত জীবনচক্র আছে যা ব্যবহারকারীর ক্রিয়া এবং সিস্টেম ইভেন্টের (স্ক্রিন রোটেশন, ইনকামিং কল, কম মেমোরি) প্রতিক্রিয়ায় অপারেটিং সিস্টেম দ্বারা পরিচালিত হয়।

মেথড বিবরণ কী করবেন
onCreateActivity তৈরি হলে একবার কল হয়UI আরম্ভ, findViewById, ViewModel সেটআপ
onStartActivity দৃশ্যমান হয়অ্যানিমেশন শুরু, BroadCastReceiver নিবন্ধন
onResumeActivity ইনপুট ফোকাস পায়ক্যামেরা, সেন্সর, অ্যানিমেশন শুরু
onPauseActivity ফোকাস হারায় (আংশিকভাবে দৃশ্যমান)ড্রাফ্ট সংরক্ষণ, অ্যানিমেশন বন্ধ
onStopActivity দৃশ্যমান নয়রিসোর্স মুক্ত করা, আপডেট বন্ধ
onDestroyActivity ধ্বংস হয়সব রেফারেন্স পরিষ্কার, LiveData থেকে আনসাবস্ক্রাইব
onRestartonStop-এর পরে onStart-এর আগে কল হয়পুনরায় আরম্ভ

গুরুত্বপূর্ণ: অস্থায়ী অবস্থা সংরক্ষণের জন্য onSaveInstanceState onStop-এর আগে কল হয়। পুনরুদ্ধার onCreate-এ Bundle savedInstanceState-এর মাধ্যমে বা ViewModel-এ SavedStateHandle-এর মাধ্যমে ঘটে। জীবনচক্রের সঠিক পরিচালনা ছাড়া, স্ক্রিন ঘোরালে অ্যাপ সব অসংরক্ষিত ডেটা হারাবে।

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("draft", draftText)
    }
    override fun onDestroy() {
        super.onDestroy()
        // Отписка от всех подписок
    }
}

Jetpack Compose-এ Activity Lifecycle

Jetpack Compose-এ, Activity-র জীবনচক্র অপরিবর্তিত থাকে, কিন্তু Compose অতিরিক্ত টুল সরবরাহ করে: LifecycleOwner-এর মাধ্যমে Lifecycle-aware composition, ধ্বংসের সময় স্বয়ংক্রিয় রিসোর্স পরিষ্কারের জন্য LifecycleEventEffect এবং DisposableEffect ইফেক্ট।

সম্পূর্ণ বিবরণে Fragment Lifecycle

Android-এ Fragment Activity-র ভিতরে থাকে এবং এর নিজস্ব জীবনচক্র আছে, যা আংশিকভাবে Activity-র সাথে ওভারল্যাপ করে কিন্তু নতুন মেথড যোগ করে। Activity ধ্বংস না করেই Fragments যোগ, প্রতিস্থাপন এবং সরানো যায়, যা এগুলিকে আরও নমনীয় কিন্তু আরও জটিল করে তোলে।

Fragment Lifecycle-এর মূল মেথড: onAttach — Fragment Activity-র সাথে সংযুক্ত (প্রথম কল); onCreate — ডেটা আরম্ভ; onCreateView — View তৈরি; onViewCreated — View তৈরি হয়েছে, UI কনফিগার করা যায়; onStart — Fragment দৃশ্যমান; onResume — Fragment ফোকাসে; onPause — Fragment ফোকাস হারায়; onStop — Fragment দৃশ্যমান নয়; onDestroyView — View ধ্বংস হয়; onDestroy — Fragment ধ্বংস হয়; onDetach — Fragment Activity থেকে বিচ্ছিন্ন হয়।

Activity থেকে মূল পার্থক্য: onCreateView এবং onDestroyView একাধিকবার কল হতে পারে (যেমন, TabLayout স্যুইচ করার সময়), যেখানে onCreate একবার কল হয়। তাই, View-র আরম্ভ onViewCreated-এ করা উচিত, onCreateView-এ নয়। View-এর সাথে সম্পর্কিত রিসোর্স (যেমন RecyclerView অ্যাডাপ্টার) onDestroyView-এ পরিষ্কার করা উচিত।

iOS-এ ViewController Lifecycle

UIViewController iOS-এ স্ক্রিন পরিচালনার জন্য বেস ক্লাস। এর জীবনচক্র মেথডের একটি ক্রম নিয়ে গঠিত যা UIKit স্বয়ংক্রিয়ভাবে কল করে। এই চক্র বোঝা সঠিক UI আরম্ভ, ডেটা ব্যবস্থাপনা এবং মেমোরি হ্যান্ডলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ।

মেথড কখন কল হয় সাধারণ ব্যবহার
loadViewযখন View Controller তার View হায়ারার্কি লোড করেস্টোরিবোর্ড ছাড়া কাস্টম আরম্ভ
viewDidLoadView মেমোরিতে লোড হওয়ার পর (একবার)UI সেটআপ, প্রাথমিক ডেটা লোড
viewWillAppearস্ক্রিনে View দেখানোর আগেডেটা আপডেট, নোটিফিকেশনে সাবস্ক্রাইব
viewDidAppearস্ক্রিনে View দেখানোর পরেঅ্যানিমেশন শুরু, ট্র্যাকিং অ্যানিমেশন শুরু
viewWillDisappearস্ক্রিন থেকে View অদৃশ্য হওয়ার আগেঅবস্থা সংরক্ষণ, নোটিফিকেশন থেকে আনসাবস্ক্রাইব
viewDidDisappearস্ক্রিন থেকে View অদৃশ্য হওয়ার পরেঅ্যানিমেশন বন্ধ, রিসোর্স মুক্ত
deallocযখন View Controller ধ্বংস হয়সব রিসোর্স মুক্ত

গুরুত্বপূর্ণ: viewDidLoad View Controller-র জীবনে শুধু একবার কল হয়। প্রতি বার প্রদর্শনে ডেটা আপডেট করতে viewWillAppear ব্যবহার করুন। যদি আপনি viewWillAppear-এ NotificationCenter-এ সাবস্ক্রাইব করেন, তাহলে মেমোরি লিক এড়াতে viewDidDisappear-এ আনসাবস্ক্রাইব করতে ভুলবেন না।

SwiftUI Lifecycle

SwiftUI View স্ট্রাকচারের মাধ্যমে Views-এর জীবনচক্র পরিচালনা করে। কলব্যাক মেথডের পরিবর্তে, SwiftUI onAppear এবং onDisappear মডিফায়ার ব্যবহার করে। গ্লোবাল অ্যাপ অবস্থার জন্য, App এবং Scene প্রোটোকলের মাধ্যমে App Lifecycle ব্যবহার করা হয়। SwiftUI অবস্থার উপর ভিত্তি করে Views-এর তৈরি এবং ধ্বংস স্বয়ংক্রিয়ভাবে পরিচালনা করে, যা ডেভেলপমেন্ট সহজ করে কিন্তু View-র আইডেন্টিটি এবং লাইফটাইম বোঝার প্রয়োজন।

swift
struct ContentView: View {
    var body: some View {
        Text("Hello")
            .onAppear {
                print("View появилась")
            }
            .onDisappear {
                print("View исчезла")
            }
    }
}

Android-এ LifecycleOwner এবং LifecycleObserver

LifecycleOwner হল Android Architecture Components-এর একটি ইন্টারফেস যা একটি অবজেক্টকে চিহ্নিত করে যার একটি জীবনচক্র আছে (Activity, Fragment)। LifecycleObserver হল একটি ইন্টারফেস যা একটি অবজেক্টকে LifecycleOwner-এর ইভেন্টে সাবস্ক্রাইব করার অনুমতি দেয়। একসাথে তারা আধুনিক Android ডেভেলপমেন্টে রিঅ্যাকটিভ জীবনচক্র ব্যবস্থাপনার ভিত্তি তৈরি করে।

onStart/onStop-এ স্পষ্টভাবে মেথড কল করার পরিবর্তে, DefaultLifecycleObserver (পুরনো LifecycleObserver এবং @OnLifecycleEvent অ্যানোটেশনের প্রতিস্থাপন) ব্যবহার করার পরামর্শ দেওয়া হয়। এটি Google-এর দ্বারা ViewModel এবং অন্যান্য কম্পোনেন্টের জন্য প্রচারিত পদ্ধতি যাদের Activity বা Fragment-এর সরাসরি রেফারেন্স ছাড়াই জীবনচক্রে প্রতিক্রিয়া জানাতে হয়।

kotlin
class MyObserver : DefaultLifecycleObserver {
    override fun onStart(owner: LifecycleOwner) {
        // Подписка на обновления
    }
    override fun onStop(owner: LifecycleOwner) {
        // Отписка
    }
}

IT Sectr-এ, আমরা সব Android প্রকল্পে LifecycleOwner ব্যবহার করি। ViewModel viewModelScope এবং lifecycleScope-এর মাধ্যমে Activity-র LifecycleOwner-এ সাবস্ক্রাইব করে, যা Activity ধ্বংস হলে স্বয়ংক্রিয়ভাবে করুটিন বাতিলের গ্যারান্টি দেয়। এটি মেমোরি লিক প্রতিরোধ করে এবং কোডকে পরিষ্কার ও নিরাপদ করে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

Android-এ Activity কী কী অবস্থার মধ্য দিয়ে যায়?

Activity ছয়টি অবস্থার মধ্য দিয়ে যায়: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

iOS-এ ViewController Lifecycle মেথডগুলি কী ক্রমে কল হয়?

ক্রম: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear। viewDidLoad একবার কল হয়।

Android-এ LifecycleOwner কী?

LifecycleOwner হল Android Architecture Components-এর একটি কম্পোনেন্ট যা Activity বা Fragment-এর জীবনচক্রের মালিক। LifecycleObserver-এর মাধ্যমে ইভেন্টে সাবস্ক্রাইব করার অনুমতি দেয়।

iOS-এ App Lifecycle-এর কী কী অবস্থা আছে?

iOS অ্যাপ পাঁচটি অবস্থার মধ্য দিয়ে যায়: Not Running, Inactive, Active, Background, Suspended। UIApplicationDelegate-এর মাধ্যমে ট্রানজিশন পরিচালিত হয়।

Android-এ Saved State কী?

Saved State হল স্ক্রিন রোটেশন বা প্রক্রিয়া পুনঃনির্মাণে Activity/Fragment অবস্থা সংরক্ষণের Android প্রক্রিয়া। এটি onSaveInstanceState এবং SavedStateHandle ব্যবহার করে।

সারাংশ

  • Android-এ Activity Lifecycle (onCreate → onDestroy) — স্ক্রিন অবস্থা ব্যবস্থাপনার ভিত্তি
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — UIKit-এর সঠিক অপারেশনের চাবিকাঠি
  • onAttach/onDetach এবং onCreateView/onDestroyView-এর কারণে Fragment Lifecycle Activity-র চেয়ে বেশি জটিল
  • LifecycleOwner (Android) মেমোরি লিক ছাড়াই ইভেন্টে রিঅ্যাকটিভ সাবস্ক্রিপশনের অনুমতি দেয়
  • App Lifecycle সম্পূর্ণ অ্যাপের অবস্থা (Active, Background, Suspended) পরিচালনা করে
  • SwiftUI প্রথাগত ViewController মেথডের পরিবর্তে onAppear এবং onDisappear ব্যবহার করে
  • সঠিক জীবনচক্র ব্যবস্থাপনা ৮০% পর্যন্ত সাধারণ মোবাইল অ্যাপ ক্র্যাশ প্রতিরোধ করে

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

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

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