এই টিউটোরিয়ালে আমরা শিখব কীভাবে একটি অ্যাপ্লিকেশন ক্লাসের মাধ্যমে বর্তমান ফোরগ্রাউন্ড এক্টিভিটির কনটেক্সট প্রোগ্রাম্যাটিক্যালি অ্যাক্সেস করা যায়।
প্রয়োজনীয় ধাপগুলো
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
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()-এ রেফারেন্স ক্লিয়ার করে।