सिंगलटन पैटर्न और JSON स्टोरेज
सिंगलटन पैटर्न किसी क्लास को केवल एक इंस्टेंस तक सीमित करता है। इस उदाहरण में हम JSON ऑब्जेक्ट को सिंगलटन में स्टोर करेंगे और ग्लोबल कॉन्टेक्स्ट का उपयोग करके टोस्ट में दिखाएंगे।
उदाहरण: JSON ऑब्जेक्ट सिंगलटन स्टोरेज
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें।
चरण 2: लेआउट फ़ाइल (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="सिंगलटन में JSON सेव करें"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
चरण 3: MainActivity.java
package com.example.jsonSingleton;
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;
{
try {
jsonObject = new JSONObject("{\"balance\": 1000.21, \"num\":100, \"is_vip\":true, \"name\":\"foo\"}");
} catch (JSONException e) {
e.printStackTrace();
}
}
@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) {
singletonExample.storeJson(jsonObject);
Toast.makeText(SingletonExample.get(), singletonExample.getJSON(), Toast.LENGTH_LONG).show();
}
});
}
}
चरण 4: सिंगलटन क्लास (SingletonExample.java)
package com.example.jsonSingleton;
import android.content.Context;
import org.json.JSONObject;
public class SingletonExample {
private Context appContext;
private JSONObject jsonData;
private static final SingletonExample ourInstance = new SingletonExample();
public void init(Context context) {
if (appContext == null) {
this.appContext = context;
}
}
private Context getContext() {
return appContext;
}
public static Context get() {
return getInstance().getContext();
}
public static synchronized SingletonExample getInstance() {
return ourInstance;
}
private SingletonExample() { }
public void storeJson(JSONObject json) {
this.jsonData = json;
}
public String getJSON() {
return jsonData != null ? jsonData.toString() : "कोई डेटा नहीं";
}
}
ऐप चलाएं
ऐप लॉन्च करें और "सिंगलटन में JSON सेव करें" बटन दबाएं। टोस्ट में ग्लोबल कॉन्टेक्स्ट का उपयोग करके स्टोर किया गया JSON ऑब्जेक्ट दिखाई देगा।
मुख्य बिंदु
- सिंगलटन में JSON ऑब्जेक्ट स्टोर करके ऐप-वाइड उपलब्ध कराया जाता है
- ग्लोबल कॉन्टेक्स्ट (
getApplicationContext()) मेमोरी लीक रोकता है synchronized getInstance()थ्रेड-सेफ एक्सेस सुनिश्चित करता है- JSON डेटा को
toString()से स्ट्रिंग में बदलकर प्रदर्शित किया जाता है - उपयोग केस: API रिस्पॉन्स कैशिंग, कॉन्फिगरेशन डेटा, यूज़र प्रोफाइल आदि