কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে এক্টিভিটির বর্তমান স্টেট (Lifecycle State) কীভাবে পেতে হয়?

Android Lifecycle: getLifecycle().getCurrentState() ব্যবহার করে এক্টিভিটির বর্তমান অবস্থা জানা

এই উদাহরণটি দেখাবে কিভাবে Android Architecture Components-এর Lifecycle API ব্যবহার করে একটি এক্টিভিটির বর্তমান লাইফসাইকেল স্টেট (CREATED, STARTED, RESUMED, DESTROYED ইত্যাদি) প্রোগ্রামেটিকভাবে বের করা যায়। এটি ডিবাগিং এবং জটিল লজিক হ্যান্ডলিংয়ে সাহায্য করে।

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project দিয়ে প্রজেক্ট তৈরি করুন।

ধাপ ২: লেয়াউট ফাইল (res/layout/activity_main.xml)

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    xmlns:app = "https://schemas.android.com/apk/res-auto"
    xmlns:tools = "https://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:gravity = "center"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity">
    <TextView
        android:id = "@+id/text"
        android:textSize = "30sp"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent" />
</LinearLayout>

ধাপ ৩: জাভা কোড (src/MainActivity.java)

getLifecycle() মেথড (AppCompatActivity-এ থেকে আসে) দিয়ে Lifecycle অবজেক্ট পাওয়া যায়, তারপর getCurrentState() কল করলে বর্তমান স্টেট রিটার্ন করে।

package com.example.myapplication;

import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView textView;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.text);
        // বর্তমান লাইফসাইকেল স্টেট প্রিন্ট করুন
        textView.setText(" " + getLifecycle().getCurrentState());
    }
}

অ্যাপ্লিকেশনটি রান করুন

ডিভাইস সংযুক্ত করে Run করুন। স্ক্রিনে বর্তমান স্টেট (সাধারণত RESUMED) দেখাবে।

অ্যান্ড্রয়েডে এক্টিভিটির বর্তমান স্টেট (Lifecycle State) কীভাবে পেতে হয়?

Lifecycle.State এর সম্ভাব্য মানগুলো

Stateবিবরণ
INITIALIZEDএক্টিভিটি তৈরি হয়েছে কিন্তু onCreate() কল হয়নি
CREATEDonCreate() কল হয়েছে, onStart() কল হয়নি
STARTEDonStart() কল হয়েছে, দৃশ্যমান কিন্তু ফোকাস নেই
RESUMEDonResume() কল হয়েছে, ইউজার ইন্টারঅ্যাক্ট করতে পারে
DESTROYEDonDestroy() কল হয়েছে, এক্টিভিটি নষ্ট হয়েছে

লাইফসাইকেল অবজারভার (Best Practice)

স্টেট চেক করার বদলে DefaultLifecycleObserver ইমপ্লিমেন্ট করে লাইফসাইকেল ইভেন্ট লিসেন করুন:

public class MyObserver implements DefaultLifecycleObserver {
    @Override
    public void onResume(@NonNull LifecycleOwner owner) {
        // UI আপডেট, ক্যামেরা 스타্ট ইত্যাদি
    }
    @Override
    public void onPause(@NonNull LifecycleOwner owner) {
        // ক্লিনআপ
    }
}

// এক্টিভিটিতে রেজিস্টার করুন
getLifecycle().addObserver(new MyObserver());

এটি লাইফসাইকেল-অয়েয়ার কম্পোনেন্ট বানাতে সাহায্য করে।

  1. অ্যান্ড্রয়েডে বর্তমান থ্রেডের নাম পাওয়ার পদ্ধতি

  2. অ্যান্ড্রয়েডে বর্তমান থ্রেড ইন্টারাপ্টেড (Interrupted) কিনা যাচাই করার পদ্ধতি

  3. অ্যান্ড্রয়েডে বর্তমান থ্রেড ডেমন (Daemon) কিনা যাচাই করার পদ্ধতি

  4. অ্যান্ড্রয়েডে বর্তমান থ্রেডের আইডি (ID) পাওয়ার পদ্ধতি