onStop — Android জীবনচক্রে Activity লুকানো

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

onStop — Android-এ Activity জীবনচক্রের একটি পদ্ধতি, যা সিস্টেম দ্বারা কল করা হয় যখন Activity ব্যবহারকারীর কাছে দৃশ্যমান হওয়া বন্ধ করে দেয়। Activity Stopped অবস্থায় চলে যায় যখন একটি নতুন Activity এটি সম্পূর্ণরূপে ঢেকে ফেলে, বা অ্যাপ্লিকেশনটি ছোট করার সময়। onStop পদ্ধতিতে, ডেভেলপারকে অ্যানিমেশন বন্ধ করতে, ক্যামেরা এবং সেন্সর সংস্থানগুলি মুক্ত করতে এবং প্রবেশ করানো ডেটার খসড়া সংরক্ষণ করতে হবে। Android Vitals (Google, 2025) অনুসারে, onStop-এর সঠিক হ্যান্ডলিং অ্যাপ্লিকেশন ছোট করার সময় ANR (অ্যাপ্লিকেশন প্রতিক্রিয়া করছে না) এর সংখ্যা 35% হ্রাস করে। onStop-এর পরে, সিস্টেম onRestart (স্ক্রিনে ফিরে আসা) বা onDestroy (সম্পূর্ণ সমাপ্তি) কল করতে পারে। Android Developers-এর Activity জীবনচক্র ডকুমেন্টেশন onStop-কে দৃশ্যমান এবং অদৃশ্য অবস্থার মধ্যে সীমানা হিসেবে বর্ণনা করে।

মূল বিষয়

  • onStop — একটি পদ্ধতি যা Activity সম্পূর্ণরূপে দৃশ্যমানতা হারালে কল করা হয়, কিন্তু Activity এখনও মেমরিতে থাকে।
  • onStop-এর পরে, Activity Stopped অবস্থায় চলে যায় — মেমরিতে জীবিত, কিন্তু দৃশ্যমান নয় এবং ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট করে না।
  • সিস্টেম Activity-তে ফিরে আসার সময় onRestart → onStart → onResume বা সমাপ্তির সময় onDestroy কল করতে পারে।
  • onStop-এ সংস্থানগুলি মুক্ত করা প্রয়োজন: অ্যানিমেশন বন্ধ করুন, সেন্সর এবং ক্যামেরা নিষ্ক্রিয় করুন, মধ্যবর্তী ডেটা সংরক্ষণ করুন।
  • মাল্টিটাস্কিং এবং ছোট করার সময় onStop-এর সঠিক বাস্তবায়ন অ্যাপ্লিকেশনের স্থিতিশীলতার একটি মূল কারণ।

Android-এ onStop কী?

onStop — AppCompatActivity ক্লাসের (এবং এর পূর্বসূরী Activity) একটি কলব্যাক পদ্ধতি, যা Android অপারেটিং সিস্টেম দ্বারা কল করা হয় যখন Activity ব্যবহারকারীর কাছে সম্পূর্ণরূপে দৃশ্যমান হওয়া বন্ধ করে দেয়। এই মুহূর্তে, Activity অন্য একটি Activity, ডায়ালগ উইন্ডো, সিস্টেম লঞ্চার বা লক স্ক্রিন দ্বারা লুকানো থাকে। জীবনচক্রের দৃষ্টিকোণ থেকে, onStop onPause-এর পরে আসে এবং সংকেত দেয় যে Activity আর স্ক্রিনে দৃশ্যমান নয়, যদিও Activity অবজেক্ট এবং তার অবস্থা মেমরিতে থাকে।

যখন Activity Stopped (থামানো) অবস্থায় যায়, এটি তার অবস্থা RAM-এ ধরে রাখে — সমস্ত ফিল্ড, ভিউ হায়ারার্কি এবং ViewModel অ্যাক্সেসযোগ্য থাকে। এটি Stopped-কে Destroyed (ধ্বংস) অবস্থা থেকে আলাদা করে, যেখানে Activity সম্পূর্ণরূপে মুছে ফেলা হয়। সিস্টেম UI মেমরির অভাব হলে Stopped অবস্থায় অ্যাপ্লিকেশন প্রক্রিয়াটি মেরে ফেলতে পারে — এটি তথাকথিত প্রক্রিয়া মৃত্যু। ডেভেলপারকে গুরুত্বপূর্ণ ডেটা (খসড়া, স্ক্রোল অবস্থান) onSaveInstanceState()-এ সংরক্ষণ করতে হবে, যা onStop-এর আগে কল করা হয়, যাতে প্রক্রিয়া মৃত্যুর সময় পুনরুদ্ধার নিশ্চিত হয়।

Android সামঞ্জস্যতা সংজ্ঞা দলিল (CDD) সংস্করণ 14+ অনুসারে, Stopped অবস্থায় একটি প্রক্রিয়ার OOM Killer দ্বারা নিহত হওয়ার অগ্রাধিকার কম — ব্যাকগ্রাউন্ড পর্যায়ের প্রক্রিয়াগুলির চেয়ে কম, কিন্তু ক্যাশে করা প্রক্রিয়াগুলির চেয়ে বেশি। Google পরিসংখ্যান অনুসারে, 68% প্রক্রিয়া মৃত্যুর ঘটনা ঘটে যখন Activity Stopped অবস্থায় থাকে, Paused নয়।

কখন onStop কল করা হয়: পরিস্থিতি এবং ক্রম

onStop কল করা হয় যখন Activity সম্পূর্ণরূপে দৃশ্যমানতা হারায়, কারণ যাই হোক না কেন: বর্তমানের উপরে একটি নতুন Activity শুরু করা, অ্যাপ্লিকেশন ছোট করা (হোম চাপা), স্ক্রিন লক করা, আগত কল, বা সিস্টেম ডায়ালগ খোলা। এই সমস্ত ক্ষেত্রে, Activity প্রথমে onPause (আংশিক ফোকাস হারানো) পায়, তারপর onStop (সম্পূর্ণ দৃশ্যমানতা হারানো) পায়।

onStop কলের প্রধান পরিস্থিতি:

  • বর্তমানের উপরে নতুন Activity শুরু করা — বর্তমান Activity onPause, তারপর onStop পায়; নতুন Activity onCreate → onStart → onResume-এর মধ্য দিয়ে যায়।
  • অ্যাপ্লিকেশন ছোট করা (হোম) — Activity 200–300 মিলিসেকেন্ডের মধ্যে onPause → onStop-এ যায়, Stopped অবস্থায় মেমরিতে থাকে।
  • স্ক্রিন লক করা — সিস্টেম onPause → onStop কল করে কারণ লক স্ক্রিন Activity-কে সম্পূর্ণরূপে ঢেকে ফেলে।
  • আগত কল — ফোন অ্যাপ্লিকেশন (Dialer) উপরে শুরু হয়, বর্তমান Activity onStop-এ যায়।
  • অন্য অ্যাপ্লিকেশনে স্যুইচ করা (সাম্প্রতিক অ্যাপ্লিকেশন) — Activity লুকানো হয়, onStop পায়, কিন্তু প্রক্রিয়া ক্যাশে থাকে।

এটি বোঝা গুরুত্বপূর্ণ যে স্ক্রিন ঘূর্ণনে onStop কল করা হয় না — এই ক্ষেত্রে, Activity ধ্বংস (onPause → onStop → onDestroy) এবং পুনরায় তৈরি (onCreate → onStart → onResume) হয়। ব্যতিক্রম হল ম্যানিফেস্টে android:configChanges="orientation" ফ্ল্যাগ, যা Activity পুনর্নির্মাণ প্রতিরোধ করে এবং পরিবর্তে onConfigurationChanged() কল করে।

Activity জীবনচক্রে onStop

onStop Activity জীবনচক্রের ক্রমে দৃশ্যমান এবং অদৃশ্য অবস্থার মধ্যে একটি কেন্দ্রীয় স্থান দখল করে। সম্পূর্ণ ক্রম: onCreate → onStart → onResume → (সক্রিয় অবস্থা) → onPause → onStop → onDestroy (অথবা ফিরে আসার সময় onRestart → onStart → onResume)।

অবস্থাপদ্ধতিদৃশ্যমানতাইন্টারঅ্যাকশনমেমরি
CreatedonCreateনানাবরাদ্দ
StartedonStartআংশিকনাসম্পূর্ণ
ResumedonResumeসম্পূর্ণহ্যাঁসম্পূর্ণ
PausedonPauseআংশিকনাসম্পূর্ণ
StoppedonStopনানাসম্পূর্ণ*
DestroyedonDestroyনানামুক্ত

*Stopped অবস্থায়, Activity মেমরিতে রাখা হয় কিন্তু সম্পদের অভাবে সিস্টেম দ্বারা মারা যেতে পারে। Stopped প্রক্রিয়া মারার অগ্রাধিকার শেষ থেকে দ্বিতীয়, শুধুমাত্র ক্যাশে করা খালি প্রক্রিয়াগুলির উপরে।

onStop এবং onSaveInstanceState: সিস্টেম গতিশীল UI অবস্থা সংরক্ষণের জন্য onStop-এর আগে onSaveInstanceState(Bundle) কল করে। ডেভেলপার এই পদ্ধতি ওভাররাইড করে ইনপুট ফিল্ডের মান, RecyclerView অবস্থান এবং নির্বাচিত আইটেম Bundle-এ সংরক্ষণ করে। এমনকি যদি Activity ধ্বংস না হয় (ব্যবহারকারী শুধু ছোট করে ফিরে এসেছে), Bundle কনফিগারেশন পরিবর্তনে onCreate-এ পাস করা হয়। Google শুধুমাত্র ক্ষণস্থায়ী UI অবস্থা — রিপোজিটরি ডেটা বা ViewModel নয়, যা Activity-র বাইরে থাকে — সংরক্ষণের পরামর্শ দেয়।

onStop-এ কী কী সংস্থান মুক্ত করবেন

onStop-এ, ডেভেলপারকে সেই সমস্ত সংস্থান মুক্ত করতে হবে যা Activity দৃশ্যমান না হলে প্রয়োজন হয় না। এটি ব্যাটারি, CPU এবং মেমরির বোঝা হ্রাস করে, এবং Activity-তে ফিরে আসার সময় ANR প্রতিরোধ করে।

onStop-এ কী মুক্ত করবেন:

  • অ্যানিমেশন এবং ট্রানজিশন — ObjectAnimator, ValueAnimator, ViewPropertyAnimator বন্ধ করুন। অদৃশ্য Activity-তে চলমান অ্যানিমেশন GPU চক্র নষ্ট করে।
  • সেন্সর — SensorManager থেকে সদস্যতা বাতিল করুন (অ্যাক্সেলেরোমিটার, জাইরোস্কোপ, ম্যাগনেটোমিটার)। সেন্সরগুলি Activity লুকানো থাকলেও শক্তি খরচ করে।
  • ক্যামেরা এবং মাইক্রোফোন — Camera2 বা CameraX মুক্ত করুন, MediaRecorder বন্ধ করুন। Activity লুকানো অবস্থায় ক্যামেরা সক্রিয় রাখা Google Play নীতি দ্বারা নিষিদ্ধ।
  • LocationListener — FusedLocationProviderClient বা LocationManager থেকে সদস্যতা বাতিল করুন। ভূ-অবস্থান সবচেয়ে বেশি শক্তি খরচকারী সংস্থান।
  • নেটওয়ার্ক শ্রোতা — WebSocket বন্ধ করুন, HTTP অনুরোধ বাতিল করুন যা ব্যাকগ্রাউন্ডে প্রয়োজন নেই।
  • MediaPlayer এবং ExoPlayer — প্লেব্যাক বিরাম দিন বা বন্ধ করুন যদি এটি ব্যাকগ্রাউন্ডে চলতে না হয়।

onStop-এ কী করবেন না: দীর্ঘস্থায়ী অপারেশন করবেন না — ডেটাবেসে বড় ডেটা সংরক্ষণ, নেটওয়ার্ক অনুরোধ, জটিল গণনা। onStop মূল থ্রেডে চলে এবং Activity-তে ফিরে আসা ব্লক করে। দীর্ঘস্থায়ী অপারেশনের জন্য, বিলম্ব সহ WorkManager বা viewModelScope-এ করুটিন ব্যবহার করুন। ViewModel সংস্থানগুলি মুক্ত করবেন না — ViewModel onStop থেকে বেঁচে থাকে এবং ফিরে আসার সময় ব্যবহার করা হবে।

onStop এবং onPause-এর মধ্যে পার্থক্য

onPause এবং onStop দৃশ্যমানতা হারানোর মাত্রা এবং বাধ্যতামূলক কর্মের পরিধিতে ভিন্ন। onPause আংশিক ফোকাস হারানোর সময় কল করা হয় (যেমন ডায়ালগ উইন্ডো বা সিস্টেম মেনু খোলা), onStop — সম্পূর্ণ দৃশ্যমানতা হারানোর সময়। এই পার্থক্য প্রতিটি পর্যায়ে কোন সংস্থানগুলি মুক্ত করতে হবে তা বেছে নেওয়ার জন্য গুরুত্বপূর্ণ।

বৈশিষ্ট্যonPauseonStop
দৃশ্যমানতার স্তরআংশিকভাবে দৃশ্যমানসম্পূর্ণরূপে অদৃশ্য
ফোকাসহারানোহারানো
নির্বাহের সময়500 মিলিসেকেন্ড পর্যন্ত5 সেকেন্ড পর্যন্ত (ANR টাইমআউট)
মুক্ত করার সংস্থানগুরুত্বপূর্ণ (মিডিয়া, ক্যামেরা)সমস্ত অদৃশ্য (সেন্সর, অ্যানিমেশন, অবস্থান)
পুনরুদ্ধারonResumeonRestart → onStart → onResume
প্রক্রিয়া অগ্রাধিকারউচ্চ (অগ্রভাগ)মধ্যম (পশ্চাৎভাগ)

সাধারণ নিয়ম: onPause-এ, সেই সিস্টেম সংস্থানগুলি মুক্ত করুন যা অবিলম্বে অন্য অ্যাপ্লিকেশনের ব্যবহারকারীর অভিজ্ঞতাকে প্রভাবিত করে (ক্যামেরা, মিডিয়া প্লেয়ার); onStop-এ — বাকি সমস্ত সংস্থান যা Activity লুকানো থাকলে প্রয়োজন নেই। Google দ্রুত সুইচিংয়ের সময় onStop কল নাও হতে পারে বলে onPause-এ গুরুত্বপূর্ণ ব্যবহারকারী ডেটা (ইমেল খসড়া, সেটিংস) সংরক্ষণের পরামর্শ দেয়।

onStop → onRestart: স্ক্রিনে ফিরে আসা

যখন ব্যবহারকারী একটি লুকানো Activity-তে ফিরে আসে, সিস্টেম onRestart → onStart → onResume কল করে। onRestart পদ্ধতি সংকেত দেয় যে Activity Stopped অবস্থা থেকে ফিরে আসছে। এটি UI এবং সেই সংস্থানগুলি পুনরুদ্ধারের জন্য একটি গুরুত্বপূর্ণ পর্যায় যা onStop-এ মুক্ত করা হয়েছিল।

ফিরে আসার সময় কল ক্রম:

  • onRestart() — Activity-কে জানানো হয় যে এটি আবার দেখানো হবে। সাধারণ কাজ: ডেটা পুনরায় লোড করা, তালিকা আপডেট করা।
  • onStart() — Activity দৃশ্যমান হয় কিন্তু এখনও সক্রিয় নয়। এখানে onStop-এ মুক্ত করা সংস্থানগুলি পুনরায় আরম্ভ করা হয়।
  • onResume() — Activity ফোকাস পায় এবং ইন্টারঅ্যাকশনের জন্য প্রস্তুত হয়। অ্যানিমেশন শুরু হয়, সেন্সর নিবন্ধিত হয়।

যদি অ্যাপ্লিকেশন প্রক্রিয়া Stopped অবস্থায় সিস্টেম দ্বারা মেরে ফেলা হয়, onRestart-এর পরিবর্তে onCreate কল করা হয়, এবং onSaveInstanceState থেকে Bundle অবস্থা পুনরুদ্ধারের জন্য পাস করা হয়। এই পরিস্থিতি (প্রক্রিয়া মৃত্যু) Android অ্যাপ্লিকেশনে বাগের সবচেয়ে সাধারণ কারণগুলির মধ্যে একটি: ডেভেলপাররা onRestart বাস্তবায়ন করে কিন্তু প্রক্রিয়া মৃত্যুর পরে onCreate-এর মাধ্যমে পুনরুদ্ধার বিবেচনা করতে ভুলে যায়।

Kotlin-এ onStop-এর কোড উদাহরণ

উদাহরণ 1: সেন্সর মুক্তির সাথে মৌলিক onStop বাস্তবায়ন

Activity লুকানোর সময় সঠিক সেন্সর সদস্যতা বাতিল এবং অ্যানিমেশন বন্ধ করা প্রদর্শন করে। স্ক্রিনে ফিরে আসার সময়, onStart-এ সংস্থানগুলি পুনরুদ্ধার করা হয়।

kotlin
class MainActivity : AppCompatActivity() {
    private lateinit var sensorManager: SensorManager
    private var accelerometer: Sensor? = null
    private var rotationAnimator: ObjectAnimator? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
        accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
    }

    override fun onStart() {
        super.onStart()
        accelerometer?.let {
            sensorManager.registerListener(sensorListener, it, SensorManager.SENSOR_DELAY_NORMAL)
        }
        rotationAnimator = ObjectAnimator.ofFloat(findViewById(R.id.icon), "rotation", 0f, 360f)
        rotationAnimator?.apply {
            duration = 3000
            repeatMode = ValueAnimator.RESTART
            repeatCount = ValueAnimator.INFINITE
            start()
        }
    }

    override fun onStop() {
        super.onStop()
        sensorManager.unregisterListener(sensorListener)
        rotationAnimator?.cancel()
    }

    override fun onRestart() {
        super.onRestart()
        Log.d("MainActivity", "Activity Stopped অবস্থা থেকে ফিরে আসছে")
    }

    private val sensorListener = SensorEventListener { event, _ ->
        Log.d("MainActivity", "ত্বরণ: x=${event.values[0]}, y=${event.values[1]}, z=${event.values[2]}")
    }
}

কোডটি onStart-এ অ্যাক্সেলেরোমিটার সেন্সর নিবন্ধন করে এবং একটি অসীম ঘূর্ণন অ্যানিমেশন শুরু করে। onStop-এ, সেন্সর অনিবন্ধিত হয় এবং অ্যানিমেশন বাতিল হয় — এটি Activity লুকানো থাকলে ব্যাটারি খরচ প্রতিরোধ করে। onRestart → onStart-এর মাধ্যমে ফিরে আসার পরে, সংস্থানগুলি পুনরায় তৈরি হয়।

উদাহরণ 2: SavedStateHandle-এর মাধ্যমে অবস্থা সংরক্ষণের সাথে onStop

ViewModel + SavedStateHandle ব্যবহার করে আধুনিক পদ্ধতি। ম্যানুয়াল Bundle হ্যান্ডলিং ছাড়াই onStop-এর সময় ফর্ম ডেটা স্বয়ংক্রিয়ভাবে সংরক্ষিত হয়।

kotlin
class FormViewModel(
    private val savedStateHandle: SavedStateHandle
) : ViewModel() {
    var email: String
        get() = savedStateHandle["email"] ?: ""
        set(value) { savedStateHandle["email"] = value }

    var message: String
        get() = savedStateHandle["message"] ?: ""
        set(value) { savedStateHandle["message"] = value }
}

class FormActivity : AppCompatActivity() {
    private val viewModel: FormViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_form)
        Log.d("FormActivity", "onCreate: email=${viewModel.email}")
    }

    override fun onStop() {
        super.onStop()
        Log.d("FormActivity", "onStop: ডেটা SavedStateHandle-এ সংরক্ষিত")
    }
}

SavedStateHandle স্বয়ংক্রিয়ভাবে onSaveInstanceState-এর সময় Bundle-এ মান সংরক্ষণ করে, যা onStop-এর আগে কল করা হয়। স্ক্রিন ঘূর্ণন বা প্রক্রিয়া মৃত্যুর সময়, ডেটা ক্ষতি ছাড়াই পুনরুদ্ধার হয়। Google প্রত্যক্ষ onSaveInstanceState-এর পরিবর্তে ফর্ম এবং খসড়ার জন্য SavedStateHandle সুপারিশ করে।

উদাহরণ 3: onStop-এ অপারেশনের জন্য lifecycleScope

onStop-এ রূপান্তরের সময় অ্যাসিঙ্ক্রোনাস ডেটা সংরক্ষণের জন্য করুটিন সহ lifecycleScope-এর ব্যবহার। করুটিন প্রধান থ্রেড ব্লক না করে IO ডিসপ্যাচারে চলে।

kotlin
class NoteActivity : AppCompatActivity() {
    private val noteRepository = NoteRepository()

    override fun onStop() {
        lifecycleScope.launch(Dispatchers.IO) {
            val text = findViewById<EditText>(R.id.note_content).text.toString()
            noteRepository.saveDraft(text)
            withContext(Dispatchers.Main) {
                Log.d("NoteActivity", "খসড়া onStop-এ সংরক্ষিত")
            }
        }
        super.onStop()
    }
}

lifecycleScope.launch করুটিন স্বয়ংক্রিয়ভাবে বাতিল হয় যদি Activity জীবনচক্র শেষ হয়। Dispatchers.IO-এর ব্যবহার নিশ্চিত করে যে ডেটাবেস বা ফাইল লেখা Activity-তে ফিরে আসা ব্লক করে না। Google-এর মতে, lifecycleScope-এ করুটিন onStop-এ অ্যাসিঙ্ক্রোনাস অপারেশন করার পছন্দের উপায়।

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

onStop এবং onDestroy-এর মধ্যে পার্থক্য কী?

onStop — Activity দৃশ্যমান হওয়া বন্ধ করে কিন্তু Stopped অবস্থায় মেমরিতে থাকে। সিস্টেম onRestart-এর মাধ্যমে Activity ফিরিয়ে আনতে পারে। onDestroy — Activity ধ্বংস হয়, মেমরি মুক্ত হয়। onDestroy-এর পরে, শুধুমাত্র Activity-র নতুন উদাহরণ (onCreate) তৈরি করে ফিরে আসা সম্ভব।

super.onStop() কল করা কি বাধ্যতামূলক?

হ্যাঁ, বাধ্যতামূলক। super.onStop() সিস্টেম উপাদানগুলির সঠিক কার্যকারিতা নিশ্চিত করে: ফ্র্যাগমেন্ট, LoaderManager, ViewModelStore। super.onStop() বাদ দিলে মেমরি লিক এবং ভুল ফ্র্যাগমেন্ট পুনরুদ্ধার হতে পারে। সর্বদা super.onStop() শেষে বা শুরুতে কল করুন — ক্রম গুরুত্বপূর্ণ নয়, কিন্তু কল বাধ্যতামূলক।

কিভাবে নিশ্চিত হবেন যে onStop কল হয়েছে?

প্রতিটি জীবনচক্র পদ্ধতিতে Log.d বা Timber ব্যবহার করুন। আপনার Activity ট্যাগ দ্বারা logcat ফিল্টার চালু করুন। উৎপাদনের জন্য, Android Vitals ব্যবহার করুন — Google স্বয়ংক্রিয়ভাবে জীবনচক্র মেট্রিক সংগ্রহ করে এবং Play Console-এ অসঙ্গতি দেখায়। ProcessLifecycleOwner-এর মাধ্যমেও জীবনচক্র পর্যবেক্ষণ উপলব্ধ।

onStop-এ যদি ব্যতিক্রম নিক্ষেপ করা হয় তাহলে কী হয়?

onStop-এ অ্যাকট ব্যতিক্রম অ্যাপ্লিকেশনের Force Close ঘটায়। সিস্টেম জীবনচক্র কলব্যাকে ব্যতিক্রম ধরে না। যদি onStop-এ এমন অপারেশন করা হয় যা ব্যতিক্রম নিক্ষেপ করতে পারে (ফাইল অপারেশন, নেটওয়ার্ক), সেগুলি try-catch-এ মোড়ান এবং super.onStop() বাধা না দিয়ে ত্রুটি লগ করুন।

onStop-এ Bitmap মুক্ত করা কি প্রয়োজন?

না, Activity-তে Bitmap GC দ্বারা সংগ্রহ করা হবে যদি এর কোনো রেফারেন্স না থাকে। onStop-এ জোর করে মুক্ত করা (recycle()) প্রয়োজনীয় নয় এবং এমনকি ক্ষতিকারকও হতে পারে — যদি Activity onRestart-এর মাধ্যমে ফিরে আসে, তাহলে Bitmap পুনরায় লোড করতে হবে। ছবি লোড করার জন্য Glide বা Coil ব্যবহার করুন — এই লাইব্রেরিগুলি স্বয়ংক্রিয়ভাবে ক্যাশিং এবং জীবনচক্র পরিচালনা করে।

সারসংক্ষেপ

  • onStop — Activity জীবনচক্র পদ্ধতি যা সম্পূর্ণ দৃশ্যমানতা হারানোর সময় কল করা হয়। Activity Stopped অবস্থায় মেমরিতে থাকে।
  • onStop-এর পরে, দুটি পরিস্থিতি সম্ভব: onRestart (স্ক্রিনে ফিরে আসা) বা onDestroy (Activity ধ্বংস)।
  • onStop-এ, সেন্সর, অ্যানিমেশন, ক্যামেরা, অবস্থান শ্রোতা মুক্ত করতে হবে — Activity অদৃশ্য হলে যা প্রয়োজন নেই সব।
  • onStop, onPause থেকে দৃশ্যমানতার স্তরে ভিন্ন: onPause — আংশিক, onStop — সম্পূর্ণ দৃশ্যমানতা হ্রাস।
  • onSaveInstanceState onStop-এর আগে কল করা হয় — ক্ষণস্থায়ী UI অবস্থা সংরক্ষণের জন্য এটি ব্যবহার করুন।
  • Dispatchers.IO সহ lifecycleScope করুটিন — onStop-এ অ্যাসিঙ্ক্রোনাস অপারেশনের পছন্দের উপায়।
  • সর্বদা super.onStop() কল করুন এবং Force Close এড়াতে বিপজ্জনক অপারেশন try-catch-এ মোড়ান।

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

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

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

আরও পড়ুন