एंड्रॉइड में सिंगलटन इंस्टेंस क्लियर करना
यह ट्यूटोरियल सिंगलटन पैटर्न को लागू करते हुए उसके इंस्टेंस को प्रोग्रामेटिकली क्लियर/रिसेट करने की क्षमता के साथ दिखाता है।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें।
चरण 2: लेआउट फ़ाइल (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"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<Button
android:id="@+id/btnClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="सिंगलटन इंस्टेंस क्लियर करें"
android:padding="16dp" />
</LinearLayout>
चरण 3: ClearableSingleton.java
package com.example.clearsingleton;
import android.content.Context;
public class ClearableSingleton {
private static volatile ClearableSingleton instance;
private Context appContext;
private Object storedData; // कोई भी डेटा स्टोर कर सकता है
private ClearableSingleton() {}
public static ClearableSingleton getInstance() {
if (instance == null) {
synchronized (ClearableSingleton.class) {
if (instance == null) {
instance = new ClearableSingleton();
}
}
}
return instance;
}
public void init(Context context) {
if (appContext == null) {
this.appContext = context.getApplicationContext();
}
}
public Context getContext() {
return appContext;
}
public static Context getGlobalContext() {
return getInstance().getContext();
}
// डेटा स्टोर करें
public void setData(Object data) {
this.storedData = data;
}
public Object getData() {
return storedData;
}
// इंस्टेंस क्लियर करें - नया इंस्टेंस बनाता है
public static void clearInstance() {
synchronized (ClearableSingleton.class) {
instance = new ClearableSingleton();
}
}
// वैकल्पिक: केवल डेटा क्लियर करें, इंस्टेंस रखें
public void clearData() {
this.storedData = null;
}
}
चरण 4: MainActivity.java
package com.example.clearsingleton;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private Button btnClear;
private ClearableSingleton singleton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnClear = findViewById(R.id.btnClear);
singleton = ClearableSingleton.getInstance();
singleton.init(getApplicationContext());
// कुछ टेस्ट डेटा सेट करें
singleton.setData("टेस्ट डेटा: " + System.currentTimeMillis());
btnClear.setOnClickListener(v -> {
// इंस्टेंस क्लियर करें
ClearableSingleton.clearInstance();
// नया इंस्टेंस प्राप्त करें (पुनः इनिशियलाइज़ करने की आवश्यकता)
singleton = ClearableSingleton.getInstance();
singleton.init(getApplicationContext());
Toast.makeText(this, "सिंगलटन इंस्टेंस क्लियर किया गया", Toast.LENGTH_LONG).show();
});
}
}
दो दृष्टिकोण
1. पूर्ण इंस्टेंस रीसेट (दिखाया गया)
public static void clearInstance() {
synchronized (ClearableSingleton.class) {
instance = new ClearableSingleton();
}
}
- पूरी तरह से नया इंस्टेंस बनाता है
- सभी फ़ील्ड रीसेट हो जाते हैं (कंटेक्स्ट सहित)
- पुनः
init(context)कॉल करना आवश्यक
2. केवल डेटा क्लियर करें (वैकल्पिक)
public void clearData() {
this.storedData = null;
}
- सिंगलटन इंस्टेंस बरकरार रखता है
- कंटेक्स्ट संरक्षित रहता है
- केवल स्टोर किया गया डेटा साफ़ होता है
ऐप चलाएं
"सिंगलटन इंस्टेंस क्लियर करें" पर क्लिक करें। टोस्ट पुष्टि करेगा कि इंस्टेंस रीसेट हो गया है।
उपयोग के मामले: उपयोगकर्ता लॉगआउट, सेशन समाप्ति, कॉन्फ़िगरेशन रीसेट, या टेस्टिंग।