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

অ্যান্ড্রয়েডে বর্তমান ফোরগ্রাউন্ড এক্টিভিটি কনটেক্সট পাওয়ার পদ্ধতি

এই টিউটোরিয়ালে আমরা শিখব কীভাবে একটি অ্যাপ্লিকেশন ক্লাসের মাধ্যমে বর্তমান ফোরগ্রাউন্ড এক্টিভিটির কনটেক্সট প্রোগ্রাম্যাটিক্যালি অ্যাক্সেস করা যায়।

প্রয়োজনীয় ধাপগুলো

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

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: অ্যাপ্লিকেশন ক্লাস তৈরি করুন

src/MyApp.java ফাইলে নিচের কোড যোগ করুন:

package app.tutorialspoint.com.sample;

import android.app.Activity;
import android.app.Application;

public class MyApp extends Application {
    private Activity currentActivity = null;
    
    @Override
    public void onCreate() {
        super.onCreate();
    }
    
    public Activity getCurrentActivity() {
        return currentActivity;
    }
    
    public void setCurrentActivity(Activity currentActivity) {
        this.currentActivity = currentActivity;
    }
}

ধাপ ৩: বেস এক্টিভিটি ক্লাস তৈরি করুন

src/MyBaseActivity.java ফাইলে নিচের কোড যোগ করুন:

package app.tutorialspoint.com.sample;

import android.app.Activity;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class MyBaseActivity extends AppCompatActivity {
    protected MyApp myApp;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myApp = (MyApp) getApplicationContext();
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        myApp.setCurrentActivity(this);
    }
    
    @Override
    protected void onPause() {
        clearReferences();
        super.onPause();
    }
    
    @Override
    protected void onDestroy() {
        clearReferences();
        super.onDestroy();
    }
    
    private void clearReferences() {
        Activity currActivity = myApp.getCurrentActivity();
        if (this.equals(currActivity)) {
            myApp.setCurrentActivity(null);
        }
    }
}

ধাপ ৪: মেইন এক্টিভিটিতে ব্যবহার করুন

src/MainActivity.java ফাইলে নিচের কোড যোগ করুন:

package app.tutorialspoint.com.sample;

import android.app.Activity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Activity currentActivity = ((MyApp) getApplicationContext()).getCurrentActivity();
        // currentActivity এখন বর্তমান ফোরগ্রাউন্ড এক্টিভিটি
    }
}

ধাপ ৫: ম্যানিফেস্ট কনফিগার করুন

AndroidManifest.xml ফাইলে অ্যাপ্লিকেশন ক্লাস রেজিস্টার করুন:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.tutorialspoint.com.sample">
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <application
        android:name=".MyApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MyBaseActivity" />
    </application>
</manifest>

মहত্বপূর্ণ নোট

সকল এক্টিভিটি MyBaseActivity থেকে ইনহেরিট করলে এই প্যাটার্নটি সঠিকভাবে কাজ করবে। এটি মেমরি লিক এড়াতে onPause() এবং onDestroy()-এ রেফারেন্স ক্লিয়ার করে।

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

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

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

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