Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में सिंक्रोनाइज़्ड सिंगलटन डायलॉग का उपयोग कैसे करें?

सिंगलटन और सिंक्रोनाइज़ेशन

सिंगलटन एक डिज़ाइन पैटर्न है जो किसी क्लास के इंस्टेंशिएशन को केवल एक इंस्टेंस तक सीमित करता है। सिंक्रोनाइज़्ड का अर्थ है कि एक समय में केवल एक थ्रेड ही उस मेथड या ब्लॉक तक पहुंच सकता है। यह मल्टी-थ्रेडेड वातावरण में थ्रेड सुरक्षा सुनिश्चित करता है।

उदाहरण: सिंक्रोनाइज़्ड सिंगलटन डायलॉग

यह उदाहरण दर्शाता है कि Android में सिंक्रोनाइज़्ड सिंगलटन पैटर्न का उपयोग करके प्रोग्रेस डायलॉग कैसे दिखाया और छिपाया जाए।

चरण 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/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>

दो बटन हैं: स्टार्ट बटन प्रोग्रेस डायलॉग दिखाता है, और एंड बटन उसे बंद करता है।

चरण 3: MainActivity.java

package com.example.singletondialogsync;

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);
            }
        });
    }
}

चरण 4: सिंगलटन क्लास (SingletonExample.java)

package com.example.singletondialogsync;

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();
        }
    }
}

चरण 5: डायलॉग लेआउट (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 पर क्लिक करें। ऐप लॉन्च होने पर "सिंगलटन में डायलॉग शुरू करें" बटन दबाएं - सिंगलटन क्लास से प्रोग्रेस डायलॉग दिखाई देगा। "सिंगलटन डायलॉग बंद करें" बटन से इसे बंद कर सकते हैं।

मुख्य बिंदु

  • synchronized getInstance() थ्रेड-सेफ सिंगलटन एक्सेस सुनिश्चित करता है
  • डायलॉग इंस्टेंस को पुन: उपयोग करने से संसाधनों की बचत होती है
  • isShowing() जांच डुप्लीकेट डायलॉग रोकती है
  • प्रोग्रेस डायलॉग के लिए कस्टम लेआउट का उपयोग
  1. एंड्रॉइड लोडर का उपयोग कैसे करें? एंड्रॉइड लोडर का उपयोग कैसे करें?

    एंड्रॉइड में लोडर (लीगेसी) बनाम आधुनिक विकल्प लोडर (android.app.LoaderManager, CursorLoader) API 28 में डिप्रिकेट हो गए हैं। नए कोड के लिए, ViewModel + LiveData/Flow + Room/Paging 3 या Coroutines + Flow का उपयोग करें। यह लेख लीगेसी लोडर API को संदर्भ के लिए दस्तावेज करता है और आधुनिक प्रतिस्थापन दिख

  1. LocalBroadcastManager का उपयोग कैसे करें? LocalBroadcastManager का उपयोग कैसे करें?

    LocalBroadcastManager - ऐप-आंतरिक इवेंट बस नोट: LocalBroadcastManager **डिप्रिकेट** है (AndroidX 1.1.0+ से)। आधुनिक ऐप्स को **LiveData/Flow**, **RxJava**, या **इवेंट बस लाइब्रेरी (greenrobot EventBus, Kotlin Channel/Flow)** का उपयोग करना चाहिए। यह लेख लीगेसी API को दस्तावेज करता है और माइग्रेशन पथ द

  1. एंड्रॉइड में हैंडलर का उपयोग कैसे करें? एंड्रॉइड में हैंडलर का उपयोग कैसे करें?

    एंड्रॉइड में Handler - सही उपयोग और आधुनिक विकल्प Handler एक लूपर से जुड़े थ्रेड पर चलने के लिए Runnable/Message को एनक्यू करता है। सामान्य उपयोग: मुख्य थ्रेड पर UI अपडेट शेड्यूल करना, विलंबित कार्य, या बैकग्राउंड थ्रेड से मुख्य थ्रेड पर पोस्ट करना। मुख्य थ्रेड Handler (सबसे आम) uiTextView.setText