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

Android-এ সিঙ্গলটন নোটিফিকেশন প্যাটার্ন ব্যবহার


সিঙ্গলটন ডিজাইন প্যাটার্ন কী?

সিঙ্গলটন হলো একটি ডিজাইন প্যাটার্ন যা একটি ক্লাসের ইনস্ট্যান্স শুধু একটি অবজেক্টে সীমাবদ্ধ করে। এটি কনকারেন্সি নিয়ন্ত্রণ এবং অ্যাপ্লিকেশনের ডেটা স্টোরে সেন্ট্রাল অ্যাক্সেস পয়েন্ট তৈরি করতে ব্যবহৃত হয়।

পদক্ষেপ ১: নতুন প্রজেক্ট তৈরি করুন

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/show"
        android:text="Show notification from singleTone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

এখানে একটি বাটন আছে। ক্লিক করলে সিঙ্গলটন ক্লাস থেকে নোটিফিকেশন দেখাবে।

পদক্ষেপ ৩: src/MainActivity.java-এ কোড যোগ করুন

package com.example.andy.myapplication;

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.Button;

public class MainActivity extends AppCompatActivity {
    Button show;
    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() {
            @RequiresApi(api = Build.VERSION_CODES.O)
            @Override
            public void onClick(View v) {
                singletonexample.notification(MainActivity.this);
            }
        });
    }
}

সিঙ্গলটন ক্লাস: src/singleTonExample.java

package com.example.andy.myapplication;

import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Build;
import android.speech.tts.TextToSpeech;
import android.support.annotation.RequiresApi;
import android.widget.Toast;

public class singleTonExample {
    public static final String ANDROID_CHANNEL_ID = "com.example.andy.myapplication";
    private static singleTonExample ourInstance = new singleTonExample();
    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;
    }

    @RequiresApi(api = Build.VERSION_CODES.O)
    public void notification(final MainActivity mainActivity) {
        NotificationManager notif = (NotificationManager) mainActivity.getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationChannel androidChannel = new NotificationChannel(
                ANDROID_CHANNEL_ID,
                "Notification Channel",
                NotificationManager.IMPORTANCE_DEFAULT
        );
        androidChannel.enableLights(true);
        androidChannel.enableVibration(true);
        androidChannel.setLightColor(Color.GREEN);
        androidChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
        notif.createNotificationChannel(androidChannel);

        Notification notify = new Notification.Builder(mainActivity, ANDROID_CHANNEL_ID)
                .setContentTitle("Notification")
                .setContentText("Sample Text")
                .setContentTitle("Sample Subject") // নোট: দুবার setContentTitle কল হয়েছে, শেষটি কাজ করবে
                .setSmallIcon(R.mipmap.ic_launcher)
                .build();
        notif.notify(0, notify);
    }
}

ফলাফল

অ্যাপ চালু করলে ডিফল্ট স্ক্রিন দেখাবে। "Show notification from singleTone" বাটনে ক্লিক করলে সিঙ্গলটন ক্লাস থেকে নোটিফিকেশন দেখাবে।

Android-এ সিঙ্গলটন নোটিফিকেশন প্যাটার্ন ব্যবহার Android-এ সিঙ্গলটন নোটিফিকেশন প্যাটার্ন ব্যবহার

মূল পয়েন্টসমূহ

  • সিঙ্গলটন প্যাটার্ন: private constructor, static instance, static getInstance() মেথড।
  • synchronized কীওয়ার্ড থ্রেড-সেফ्टी নিশ্চিত করে।
  • Android 8.0+ (API 26+) এ NotificationChannel বাধ্যতামূলক।
  • Notification.Builder (API 26+) বা NotificationCompat.Builder (পুরনো API-এর জন্য) ব্যবহার করুন।
  • নোট: কোডে দুবার setContentTitle কল করা হয়েছে — দ্বিতীয়টি প্রথমটিকে ওভাররাইড করবে।
  1. অ্যান্ড্রয়েড লোডার (Loader) ব্যবহারের পদ্ধতি

  2. অ্যান্ড্রয়েডে LocalBroadcastManager ব্যবহারের পদ্ধতি

  3. অ্যান্ড্রয়েডে নোটিফিকেশন InboxStyle ব্যবহার করার পদ্ধতি

  4. Android-এ Notification.deleteIntent কীভাবে ব্যবহার করবেন