সিঙ্গলটন ডিজাইন প্যাটার্ন এবং সিঙ্ক্রোনাইজেশন
সিঙ্গলটন একটি ডিজাইন প্যাটার্ন যা একটি ক্লাসের ইনস্ট্যান্সিয়েশনকে শুধুমাত্র একটি ইনস্ট্যান্সে সীমাবদ্ধ করে। সিঙ্ক্রোনাইজড মানে একবারে শুধুমাত্র একটি থ্রেড অ্যাক্সেস করতে পারে। এটি মাল্টি-থ্রেডেড পরিবেশে থ্রেড সেফটি নিশ্চিত করে।
উদাহরণ: সিঙ্ক্রোনাইজড সিঙ্গলটন ডায়ালগ
এই উদাহরণটি প্রদর্শন করে কীভাবে অ্যান্ড্রয়েডে সিঙ্ক্রোনাইজড সিঙ্গলটন ডায়ালগ ব্যবহার করতে হয়।
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
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: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/start"
android:text="সিঙ্গলটন ডায়ালগ শুরু করুন"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/end"
android:text="সিঙ্গলটন ডায়ালগ বন্ধ করুন"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
দুটি বাটন আছে: স্টার্ট বাটনে ক্লিক করলে প্রগ্রেস ডায়ালগ দেখাবে, এন্ড বাটনে ক্লিক করলে ডায়ালগ বন্ধ করবে।
ধাপ ৩: MainActivity.java
package com.example.singletondialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button start;
SingleTonExample singletonExample;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = findViewById(R.id.start);
singletonExample = SingleTonExample.getInstance();
findViewById(R.id.end).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
singletonExample.dismiss();
}
});
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
singletonExample.show(MainActivity.this);
}
});
}
}
ধাপ ৪: সিঙ্গলটন ক্লাস (SingleTonExample.java)
package com.example.singletondialog;
import android.app.Dialog;
import android.content.Context;
import android.view.Window;
public class SingleTonExample {
private Dialog dialog;
private static final SingleTonExample ourInstance = new SingleTonExample();
public static synchronized SingleTonExample getInstance() {
return ourInstance;
}
private SingleTonExample() { }
public void show(Context context) {
if (dialog != null && dialog.isShowing()) {
return;
}
dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.layout_progress_dialog);
dialog.setCancelable(true);
dialog.show();
}
public void dismiss() {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
}
}
ধাপ ৫: ডায়ালগ লেআউট (res/layout/layout_progress_dialog.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progress" />
</LinearLayout>
অ্যাপ্লিকেশন চালান
অ্যান্ড্রয়েড ডিভাইস সংযুক্ত করে Run করুন। "সিঙ্গলটন ডায়ালগ শুরু করুন" বাটনে ক্লিক করলে সিঙ্গলটন ক্লাস থেকে ডায়ালগ দেখাবে।