उदाहरण में जाने से पहले, हमें पता होना चाहिए कि Android में IntentService क्या है। IntentService बैकग्राउंड ऑपरेशन को असिंक्रोनस रूप से करता है। जब उपयोगकर्ता एक्टिविटी से startService() कॉल करता है, तो यह प्रत्येक रिक्वेस्ट के लिए इंस्टेंस नहीं बनाता और सर्विस क्लास में कुछ एक्शन पूरा होने के बाद सर्विस को रोक देता है या फिर हमें stopSelf() का उपयोग करके सर्विस को मैन्युअली रोकना पड़ता है।
IntentService से लगातार UI अपडेट करने का उदाहरण
चरण 1 - नया प्रोजेक्ट बनाएं
Android Studio में एक नया प्रोजेक्ट बनाएं: File → New Project पर जाएं और आवश्यक विवरण भरें।
चरण 2 - लेआउट XML में कोड जोड़ें
res/layout/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/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Service"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
उपरोक्त कोड में, हमने TextView लिया है। जब उपयोगकर्ता IntentService से डेटा प्राप्त करता है, तो यह अपडेट होगा।
चरण 3 - MainActivity.java में कोड जोड़ें
src/MainActivity.java में निम्नलिखित कोड जोड़ें:
package com.example.andy.myapplication;
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.support.v4.content.LocalBroadcastManager;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
private TextView text;
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String someValue = intent.getStringExtra("someName");
text.setText(someValue);
}
};
@Override
protected void onStart() {
super.onStart();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.andy.myapplication");
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.text);
final Handler handler = new Handler();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
handler.post(() ->
startService(new Intent(MainActivity.this, MyService.class)));
}
};
Timer timer = new Timer();
timer.schedule(timerTask, 0, 10000); // हर 10 सेकंड में सर्विस शुरू करें
}
@Override
protected void onStop() {
super.onStop();
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
}
}
चरण 4 - Service क्लास बनाएं
MyService.java नामक क्लास फाइल बनाएं और निम्नलिखित कोड जोड़ें:
package com.example.andy.myapplication;
import android.app.IntentService;
import android.content.Intent;
import android.os.IBinder;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
public class MyService extends IntentService {
public static volatile boolean shouldStop = false;
public MyService() {
super(MyService.class.getSimpleName());
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
protected void onHandleIntent(Intent intent) {
Intent intent1 = new Intent("com.example.andy.myapplication");
for (int i = 0; i < 10; i++) {
intent1.putExtra("someName", "Tutorialspoint.com " + i);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent1);
try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }
}
if (shouldStop) {
stopSelf();
return;
}
}
}
चरण 5 - Manifest में कोड जोड़ें
AndroidManifest.xml में निम्नलिखित कोड जोड़ें:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.andy.myapplication">
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<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>
<service android:name=".MyService"/>
</application>
</manifest>
ऐप चलाएं
अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें और ऐप चलाएं। परिणाम में, यह IntentService से लगातार UI अपडेट करेगा।
आधुनिक विकल्प: Android 8.0+ के लिए IntentService डिप्रिकेटेड है।
WorkManagerयाForeground Serviceके साथLiveData/Flowका उपयोग करने पर विचार करें।