एंड्रॉइड में आवधिक 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 अपडेट करेगा।
चेतावनी: लगातार पृष्ठभूमि निष्पादन बैटरी खत्म करता है। उत्पादन ऐप्स के लिए WorkManager का उपयोग करें।