ग्लोबल कंटेक्स्ट के साथ सिंगलटन में सरणी स्टोर करना
यह ट्यूटोरियल एक सरणी को संग्रहीत करने और एप्लिकेशन में कहीं से भी ग्लोबल कंटेक्स्ट का उपयोग करके इसे एक्सेस करने के लिए सिंगलटन पैटर्न का उपयोग करने का तरीका दिखाता है।
चरण 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/btnSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="सिंगलटन में सरणी सेव करें"
android:padding="16dp" />
</LinearLayout>
चरण 3: ArraySingleton.java
package com.example.arraysingleton;
import android.content.Context;
import java.util.Arrays;
public class ArraySingleton {
private static volatile ArraySingleton instance;
private int[] storedArray;
private Context appContext;
private ArraySingleton() {}
public static ArraySingleton getInstance() {
if (instance == null) {
synchronized (ArraySingleton.class) {
if (instance == null) {
instance = new ArraySingleton();
}
}
}
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 storeArray(int[] array) {
this.storedArray = array != null ? array.clone() : new int[0];
}
// सरणी प्राप्त करें
public int[] getArray() {
return storedArray != null ? storedArray.clone() : new int[0];
}
// सरणी स्ट्रिंग प्रतिनिधित्व प्राप्त करें
public String getArrayAsString() {
return Arrays.toString(storedArray);
}
// साफ़ करें
public void clear() {
storedArray = new int[0];
}
}
चरण 4: MainActivity.java
package com.example.arraysingleton;
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 btnSave;
private ArraySingleton singleton;
private final int[] sampleArray = {33, 12, 98, 45, 67, 23};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSave = findViewById(R.id.btnSave);
singleton = ArraySingleton.getInstance();
singleton.init(getApplicationContext());
btnSave.setOnClickListener(v -> {
// सिंगलटन में सरणी स्टोर करें
singleton.storeArray(sampleArray);
// ग्लोबल कंटेक्स्ट का उपयोग करके टोस्ट दिखाएं
Toast.makeText(
ArraySingleton.getGlobalContext(),
"स्टोर की गई सरणी: " + singleton.getArrayAsString(),
Toast.LENGTH_LONG
).show();
});
}
}
मुख्य अवधारणाएं
- ग्लोबल कंटेक्स्ट:
getApplicationContext()का उपयोग करके एक्टिविटी लीक से बचें - रक्षात्मक कॉपी:
clone()आंतरिक सरणी को बाहरी संशोधन से बचाता है - नल सुरक्षा: नल सरणी को खाली सरणी के रूप में संभालता है
- थ्रेड सुरक्षा: डबल-चेक्ड लॉकिंग के साथ
volatile
ऐप चलाएं
बटन पर क्लिक करें। ग्लोबल कंटेक्स्ट का उपयोग करके टोस्ट सरणी मान दिखाएगा: [33, 12, 98, 45, 67, 23]।
सर्वोत्तम अभ्यास: बड़े डेटा सेट के लिए, सरणी के बजाय डेटाबेस या SharedPreferences का उपयोग करने पर विचार करें।