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

एंड्रॉइड में हर 10 सेकंड में IntentService कैसे शुरू करें?

एंड्रॉइड में आवधिक IntentService निष्पादन

यह ट्यूटोरियल Timer और Handler का उपयोग करके हर 10 सेकंड में IntentService शुरू करने का तरीका दिखाता है।

⚠️ महत्वपूर्ण: IntentService एंड्रॉइड 11+ में अप्रचलित है। आधुनिक ऐप्स के लिए WorkManager के साथ PeriodicWorkRequest का उपयोग करें।

चरण 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="हर 10 सेकंड में सेवा चल रही है..."
        android:textSize="20sp"
        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: PeriodicService.java

package com.example.periodicservicedemo;

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

public class PeriodicService extends IntentService {

    public static final String ACTION_UPDATE = "com.example.periodicservicedemo.UPDATE";
    public static final String EXTRA_TIMESTAMP = "timestamp";
    public static volatile boolean shouldStop = false;

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

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

    @Override
    protected void onHandleIntent(Intent intent) {
        if (shouldStop) {
            stopSelf();
            return;
        }

        // पृष्ठभूमि कार्य करें
        String timestamp = "अपडेट: " + java.text.DateFormat.getTimeInstance().format(new java.util.Date());
        
        Intent broadcastIntent = new Intent(ACTION_UPDATE);
        broadcastIntent.putExtra(EXTRA_TIMESTAMP, timestamp);
        LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);
    }
}

चरण 4: MainActivity.java

package com.example.periodicservicedemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

    private TextView tvStatus;
    private Timer timer;
    private Handler handler = new Handler();
    private BroadcastReceiver receiver;

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

        tvStatus = findViewById(R.id.tvStatus);

        // ब्रॉडकास्ट रिसीवर
        receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String data = intent.getStringExtra(PeriodicService.EXTRA_TIMESTAMP);
                tvStatus.setText(data);
            }
        };

        // आवधिक टास्क शुरू करें
        startPeriodicService();
    }

    private void startPeriodicService() {
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                handler.post(() -> {
                    startService(new Intent(MainActivity.this, PeriodicService.class));
                });
            }
        };

        timer = new Timer();
        // तुरंत शुरू करें, फिर हर 10 सेकंड (10000ms) में दोहराएं
        timer.schedule(timerTask, 0, 10000);
    }

    @Override
    protected void onStart() {
        super.onStart();
        IntentFilter filter = new IntentFilter(PeriodicService.ACTION_UPDATE);
        LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter);
    }

    @Override
    protected void onStop() {
        super.onStop();
        LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);
        if (timer != null) {
            timer.cancel();
            timer = null;
        }
        PeriodicService.shouldStop = true;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (timer != null) {
            timer.cancel();
        }
    }
}

चरण 5: AndroidManifest.xml

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

बेहतर दृष्टिकोण: WorkManager (अनुशंसित)


// build.gradle में निर्भरता
implementation "androidx.work:work-runtime-ktx:2.7.1"

// PeriodicWorkRequest
PeriodicWorkRequest workRequest = new PeriodicWorkRequest.Builder(
    MyWorker.class, 15, TimeUnit.MINUTES) // न्यूनतम 15 मिनट
    .build();

WorkManager.getInstance(context).enqueue(workRequest);

ऐप चलाएं

ऐप हर 10 सेकंड में सेवा शुरू करेगा और टाइमस्टैम्प के साथ UI अपडेट करेगा।

एंड्रॉइड में हर 10 सेकंड में IntentService कैसे शुरू करें?

चेतावनी: लगातार पृष्ठभूमि निष्पादन बैटरी खत्म करता है। उत्पादन ऐप्स के लिए WorkManager का उपयोग करें।

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

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

  1. Android ऐप को बूट पर ऑटो-स्टार्ट कैसे करें? Android ऐप को बूट पर ऑटो-स्टार्ट कैसे करें?

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

  1. Android में AsyncTask के लिए टाइमआउट कैसे सेट करें? Android में AsyncTask के लिए टाइमआउट कैसे सेट करें?

    परिचय यह ट्यूटोरियल दिखाता है कि AsyncTask के लिए टाइमआउट कैसे सेट करें। ध्यान दें: AsyncTask API 30 (Android 11) में डिप्रिकेटेड है। आधुनिक ऐप्स के लिए Coroutines, RxJava, या ExecutorService उपयोग करें। यह उदाहरण केवल लिगेसी कोड समझने के लिए है। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं Android Studi