উদাহরণের আগে জানা দরকার সিঙ্গলটন ডিজাইন প্যাটার্ন কী। সিঙ্গলটন হলো একটি ডিজাইন প্যাটার্ন যা একটি ক্লাসের ইনস্ট্যানশনকে শুধু একটি ইন্সট্যান্সে সীমাবদ্ধ করে। উল্লেখযোগ্য ব্যবহারগুলোর মধ্যে রয়েছে কনকারেন্সি নিয়ন্ত্রণ এবং অ্যাপ্লিকেশনের ডেটা স্টোর অ্যাক্সেস করার জন্য একটি কেন্দ্রীয় পয়েন্ট তৈরি করা।
এই উদাহরণটি দেখায় কীভাবে অ্যান্ড্রয়েডে সিঙ্গলটন ক্লাস প্রতি ঘন্টা রিফ্রেশ করা যায়।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project এ যান এবং প্রজেক্ট তৈরি করার জন্য প্রয়োজনীয় তথ্য পূরণ করুন।
ধাপ ২: লেআউট ফাইলে Button যোগ করুন (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/show"
android:text="Refresh Singleton"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
ধাপ ৩: MainActivity.java-এ লজিক বাস্তবায়ন করুন
package com.example.andy.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
Button show;
JSONObject jsonObject;
SingleTonExample singletonExample;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show = findViewById(R.id.show);
singletonExample = SingleTonExample.getInstance();
singletonExample.init(getApplicationContext());
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Refresh Singleton class every one hour", Toast.LENGTH_LONG).show();
}
});
}
}
ধাপ ৪: SingleTonExample.java-এ অটো রিফ্রেশ লজিক বাস্তবায়ন করুন
package com.example.andy.myapplication;
import android.content.Context;
import java.util.Timer;
import java.util.TimerTask;
public class SingleTonExample {
private static SingleTonExample ourInstance = new SingleTonExample();
static {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
synchronized (SingleTonExample.class) {
ourInstance = new SingleTonExample();
}
}
}, 60 * 60 * 1000L); // প্রতি ঘন্টা (৩৬০০০০০ মিলিসেকেন্ড)
}
private Context appContext;
private SingleTonExample() { }
public static Context get() {
return getInstance().getContext();
}
public static synchronized SingleTonExample getInstance() {
return ourInstance;
}
public void init(Context context) {
if (appContext == null) {
this.appContext = context;
}
}
private Context getContext() {
return appContext;
}
}
কিভাবে কাজ করে
- Static Initializer Block - ক্লাস লোড হওয়ার সাথে সাথে Timer শুরু হয়
- Timer.schedule() - প্রতি ৩৬০০০০০ মিলিসেকেন্ড (১ ঘন্টা) পরপর টাস্ক চালু হয়
- Synchronized Block - নতুন ইনস্ট্যান্স তৈরি করার সময় থ্রেড সেফটি নিশ্চিত করে
- Instance Replacement - পুরনো ইনস্ট্যান্সের রেফারেন্স নতুন ইনস্ট্যান্স দিয়ে প্রতিস্থাপিত হয়
সতর্কতা
এই পদ্ধতিতে পুরনো ইনস্ট্যান্সে সংরক্ষিত ডেটা হারাবে। প্রোডাকশনে ব্যবহার করার আগে ডেটা পিসিস্টেন্স (SharedPreferences, Database) বিবেচনা করুন।
অ্যাপ্লিকেশন চালান
আপনার অ্যান্ড্রয়েড ডিভাইস কম্পিউটারের সাথে সংযুক্ত করুন। Android Studio-তে প্রজেক্টের অ্যাক্টিভিটি ফাইল খুলুন এবং টুলবার থেকে Run আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস নির্বাচন করুন এবং আউটপুট দেখুন।

উপরের বাটনে ক্লিক করলে Toast দেখাবে:
