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

एंड्रॉइड में AsyncTask को निश्चित अंतराल पर बार-बार कैसे चलाएं?

एंड्रॉइड में निश्चित अंतराल पर बैकग्राउंड टास्क चलाना

यह उदाहरण दिखाता है कि Handler और Runnable का उपयोग करके AsyncTask को नियमित अंतराल पर कैसे चलाया जाता है।

⚠️ महत्वपूर्ण नोट

AsyncTask API डिप्रिकेटेड है (API लेवल 30 से)। आधुनिक ऐप्स के लिए Kotlin Coroutines, WorkManager, या ExecutorService का उपयोग करने की सिफारिश की जाती है।

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

Android Studio में File → New Project चुनकर नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट XML

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="पीरियॉडिक टास्क डेमो"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

चरण 3: Handler + Runnable दृष्टिकोण (अनुशंसित)

MainActivity.java - AsyncTask के बजाय Handler का उपयोग करें:

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Handler handler = new Handler(Looper.getMainLooper());
    private Runnable periodicTask;
    private static final long INTERVAL_MS = 5000; // 5 सेकंड

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

    private void startPeriodicTask() {
        periodicTask = new Runnable() {
            @Override
            public void run() {
                // यहां अपना बैकग्राउंड कार्य करें
                // नेटवर्क कॉल के लिए ExecutorService या Coroutines उपयोग करें
                
                // UI अपडेट के लिए main thread पर चलाएं
                runOnUiThread(() -> 
                    Toast.makeText(MainActivity.this, 
                        "टास्क हर 5 सेकंड में चल रहा है", Toast.LENGTH_SHORT).show()
                );

                // अगली बार के लिए शेड्यूल करें
                handler.postDelayed(this, INTERVAL_MS);
            }
        };
        
        // पहली बार 3 सेकंड बाद शुरू करें
        handler.postDelayed(periodicTask, 3000);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // लीक रोकने के लिए कॉलबैक हटाएं
        handler.removeCallbacks(periodicTask);
    }
}

चरण 4: आधुनिक विकल्प - WorkManager (पीरियॉडिक कार्य के लिए सर्वोत्तम)

build.gradle में निर्भरता जोड़ें:

dependencies {
    implementation "androidx.work:work-runtime-ktx:2.8.1"
}

PeriodicWorker.java:

import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.work.Worker;
import androidx.work.WorkerParameters;

public class PeriodicWorker extends Worker {
    public PeriodicWorker(@NonNull Context context, @NonNull WorkerParameters params) {
        super(context, params);
    }

    @NonNull
    @Override
    public Result doWork() {
        // बैकग्राउंड कार्य यहां करें
        Log.d("PeriodicWorker", "पीरियॉडिक कार्य चल रहा है");
        return Result.success();
    }
}

MainActivity.java में शेड्यूल करें:

import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkManager;
import java.util.concurrent.TimeUnit;

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

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

चरण 5: Manifest

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        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>
    </application>
</manifest>

सारांश

दृष्टिकोणउपयोग केसन्यूनतम अंतराल
Handler + RunnableUI अपडेट, छोटे कार्यकोई सीमा नहीं (ms)
WorkManagerनेटवर्क, डेटाबेस, सिंक15 मिनट
AlarmManager + Serviceसटीक समय, सिस्टम इवेंटकोई सीमा नहीं

ऐप चलाएं

डिवाइस कनेक्ट करें, Run पर क्लिक करें। हर 5 सेकंड में टोस्ट संदेश दिखाई देगा।

  1. Android में देरी के बाद मेथड कैसे कॉल करें? Android में देरी के बाद मेथड कैसे कॉल करें?

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

  1. एंड्रॉयड पर स्क्रीन टाइम कैसे चेक करें एंड्रॉयड पर स्क्रीन टाइम कैसे चेक करें

    स्मार्टफोन हमारे जीवन का इतना बड़ा हिस्सा हैं, लेकिन यह ट्रैक खोना आसान हो सकता है कि हम उन्हें घूरने में कितना समय बिताते हैं। सौभाग्य से, आप Digital Wellbeing ऐप के माध्यम से एंड्रॉयड पर अपना स्क्रीन टाइम चेक कर सकते हैं, जो आपके कुल फोन उपयोग और आप अलग-अलग ऐप्स में कितना समय बिताते हैं, दोनों को

  1. एंड्रॉइड टीवी पर पॉपकॉर्न टाइम कैसे इंस्टॉल करें एंड्रॉइड टीवी पर पॉपकॉर्न टाइम कैसे इंस्टॉल करें

    पॉपकॉर्न टाइम नेटफ्लिक्स, हुलु या HBO गो जैसी प्रीमियम कंटेंट स्ट्रीमिंग सेवाओं का एक मुफ्त विकल्प है। स्पष्ट कारणों से, मैं पॉपकॉर्न टाइम के उपयोग से संबंधित कानूनी मुद्दों पर बहस में नहीं पड़ूंगा। अगर आपने इस सॉफ्टवेयर को इंस्टॉल करने का तरीका खोजा है, तो आप शायद मेरे विचारों की परवाह किए बिना इसक