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

एंड्रॉइड में IntentService से UI कैसे अपडेट करें?

एंड्रॉइड में IntentService से UI अपडेट करना

यह ट्यूटोरियल IntentService (पृष्ठभूमि कार्य) और BroadcastReceiver (UI संचार) का उपयोग करके पृष्ठभूमि सेवा से UI अपडेट करने का तरीका दिखाता है।

नोट: IntentService एंड्रॉइड 11 (API 30) में अप्रचलित है। आधुनिक ऐप्स के लिए WorkManager या Coroutines का उपयोग करने पर विचार करें।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project चुनें।

चरण 2: लेआउट फ़ाइल (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tvStatus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="सेवा शुरू करने के लिए टैप करें"
        android:textSize="24sp"
        android:padding="24dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

चरण 3: MyIntentService.java बनाएं

package com.example.intentservicedemo;

import android.app.IntentService;
import android.content.Intent;
import android.os.IBinder;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;

public class MyIntentService extends IntentService {

    public static final String ACTION_UPDATE_UI = "com.example.intentservicedemo.UPDATE_UI";
    public static final String EXTRA_DATA = "extra_data";

    public MyIntentService() {
        super("MyIntentService");
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // पृष्ठभूमि कार्य सिमुलेट करें
        try {
            Thread.sleep(2000); // 2 सेकंड का कार्य
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }

        // UI अपडेट के लिए ब्रॉडकास्ट भेजें
        Intent broadcastIntent = new Intent(ACTION_UPDATE_UI);
        broadcastIntent.putExtra(EXTRA_DATA, "ट्यूटोरियलपॉइंट.कॉम से डेटा - " + System.currentTimeMillis());
        LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);
    }
}

चरण 4: MainActivity.java

package com.example.intentservicedemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;

public class MainActivity extends AppCompatActivity {

    private TextView tvStatus;
    private BroadcastReceiver uiUpdateReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvStatus = findViewById(R.id.tvStatus);

        // ब्रॉडकास्ट रिसीवर सेटअप
        uiUpdateReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String data = intent.getStringExtra(MyIntentService.EXTRA_DATA);
                tvStatus.setText("प्राप्त: " + data);
            }
        };

        // क्लिक पर सेवा शुरू करें
        tvStatus.setOnClickListener(v -> {
            tvStatus.setText("सेवा चल रही है...");
            startService(new Intent(MainActivity.this, MyIntentService.class));
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        // रिसीवर पंजीकृत करें
        IntentFilter filter = new IntentFilter(MyIntentService.ACTION_UPDATE_UI);
        LocalBroadcastManager.getInstance(this).registerReceiver(uiUpdateReceiver, filter);
    }

    @Override
    protected void onStop() {
        super.onStop();
        // रिसीवर अनपंजीकृत करें
        LocalBroadcastManager.getInstance(this).unregisterReceiver(uiUpdateReceiver);
    }
}

चरण 5: AndroidManifest.xml में सेवा घोषित करें

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.intentservicedemo">

    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name=".MyIntentService" />

    </application>
</manifest>

कैसे काम करता है

  1. उपयोगकर्ता TextView पर क्लिक करता है → startService() कॉल करता है
  2. IntentService पृष्ठभूमि थ्रेड पर onHandleIntent() चलाता है
  3. कार्य पूरा होने पर, यह LocalBroadcastManager के माध्यम से ब्रॉडकास्ट भेजता है
  4. MainActivity में पंजीकृत BroadcastReceiver इसे प्राप्त करता है
  5. UI मुख्य थ्रेड पर अपडेट होता है

ऐप चलाएं

"सेवा शुरू करने के लिए टैप करें" पर क्लिक करें। 2 सेकंड के बाद, टेक्स्ट सेवा से डेटा के साथ अपडेट होगा।

एंड्रॉइड में IntentService से UI कैसे अपडेट करें?

आधुनिक विकल्प: नए प्रोजेक्ट्स के लिए WorkManager, Coroutines + Flow, या RxJava का उपयोग करें।

  1. एंड्रॉइड एक्टिविटी से रिंगटोन कैसे सेट करें? एंड्रॉइड एक्टिविटी से रिंगटोन कैसे सेट करें?

    एंड्रॉइड में RingtoneManager से रिंगटोन चुनना और सेट करना एंड्रॉइड में सिस्टम रिंगटोन पिकर लॉन्च करने के लिए RingtoneManager.ACTION_RINGTONE_PICKER इंटेंट उपयोग करें। यूज़र द्वारा चुनी गई रिंगटोन का URI onActivityResult में मिलता है। **नोट:** Android 10+ (API 29) में WRITE_SETTINGS परमिशन से सिस्टम

  1. Android ऐप में बूट पर सर्विस कैसे शुरू करें? Android ऐप में बूट पर सर्विस कैसे शुरू करें?

    बूट पूर्ण होने पर सर्विस शुरू करना यह उदाहरण दर्शाता है कि BOOT_COMPLETED ब्रॉडकास्ट प्राप्त करके डिवाइस बूट होने पर बैकग्राउंड सर्विस कैसे शुरू करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: सिंपल लेआउट (activity_main.xml) <?xml version=1.0 encoding=utf-8?

  1. एंड्रॉइड से मैलवेयर कैसे हटाएं? एंड्रॉइड से मैलवेयर कैसे हटाएं?

    परिचय स्मार्टफोन में बैंकिंग ऐप्स, व्यक्तिगत डेटा, स्थान इतिहास आदि संवेदनशील जानकारी होती है। एंड्रॉइड डिवाइस भी कंप्यूटर की तरह मैलवेयर (वायरस, ट्रोजन, स्पायवेयर, एडवेयर, रैंसमवेयर) से संक्रमित हो सकते हैं। मैलवेयर कैसे प्रवेश करता है? असुरक्षित स्रोतों/थर्ड-पार्टी ऐप स्टोर्स से ऐप इंस्टॉल करना