IntentService
क्लास, दौड़ने के लिए एक आसान स्ट्रक्चर देती है
किसी सिंगल बैकग्राउंड थ्रेड पर कोई कार्रवाई हुई है. इससे, लंबे समय तक चलने वाली कार्रवाइयों को मैनेज करने में मदद मिलती है
आपके यूज़र इंटरफ़ेस के रिस्पॉन्स को प्रभावित किए बिना. साथ ही,
ज़्यादातर यूज़र इंटरफ़ेस के लाइफ़साइकल इवेंट पर, IntentService
पर कोई असर नहीं पड़ता है. इसलिए, यह
उन परिस्थितियों में चलना जारी रहेगा, जिनसे AsyncTask
बंद हो सकता है
IntentService
की कुछ सीमाएं होती हैं:
-
यह सीधे आपके यूज़र इंटरफ़ेस से इंटरैक्ट नहीं कर सकता. इसके नतीजे यूज़र इंटरफ़ेस (यूआई) में दिखाने के लिए,
को उन्हें
Activity
पर भेजना होगा. -
काम के अनुरोध एक क्रम में पूरे होते हैं. अगर कोई कार्रवाई
IntentService
, और आप उसे दूसरा अनुरोध भेजते हैं. अनुरोध इतने समय तक इंतज़ार करेगा पहला ऑपरेशन खत्म हो जाता है. -
IntentService
पर चल रही किसी कार्रवाई को बीच में रोका नहीं जा सकता.
हालांकि, ज़्यादातर मामलों में IntentService
ही बेहतर तरीके से काम करने का बेहतर तरीका है
बैकग्राउंड में आसान कार्रवाइयां.
इस गाइड में, ये काम करने का तरीका बताया गया है:
IntentService
की अपनी खुद की सब-क्लास बनाएं.- ज़रूरी कॉलबैक का
onHandleIntent()
तरीका बनाएं. IntentService
तय करें को अपलोड करने की ज़रूरत नहीं है.
नए इंटेंट मैनेज करें
अपने ऐप्लिकेशन के लिए IntentService
कॉम्पोनेंट बनाने के लिए, ऐसी क्लास तय करें जो
IntentService
तक बढ़ाया जा सकता है और इसके अंदर, ऐसा तरीका तय किया जा सकता है जो
onHandleIntent()
को ओवरराइड करता है. उदाहरण के लिए:
Kotlin
class RSSPullService : IntentService(RSSPullService::class.simpleName) override fun onHandleIntent(workIntent: Intent) { // Gets data from the incoming Intent val dataString = workIntent.dataString ... // Do work here, based on the contents of dataString ... } }
Java
public class RSSPullService extends IntentService { @Override protected void onHandleIntent(Intent workIntent) { // Gets data from the incoming Intent String dataString = workIntent.getDataString(); ... // Do work here, based on the contents of dataString ... } }
ध्यान दें कि किसी सामान्य Service
कॉम्पोनेंट के दूसरे कॉलबैक, जैसे कि
onStartCommand()
अपने-आप शुरू हो जाता है
IntentService
. IntentService
में आपको इनसे बचना चाहिए
इन कॉलबैक को ओवरराइड कर सकता है.
IntentService
बनाने के बारे में ज़्यादा जानने के लिए, जोड़ने की तारीख और समय देखें
IntentService क्लास.
मेनिफ़ेस्ट में इंटेंट सेवा के बारे में बताएं
IntentService
के लिए आपके ऐप्लिकेशन मेनिफ़ेस्ट में भी एंट्री करना ज़रूरी है.
इस फ़ॉर्म को
<service>
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
वह एलिमेंट जो
<application>
एलिमेंट:
<application android:icon="@drawable/icon" android:label="@string/app_name"> ... <!-- Because android:exported is set to "false", the service is only available to this app. --> <service android:name=".RSSPullService" android:exported="false"/> ... </application>
विशेषता android:name
IntentService
.
ध्यान दें कि
<service>
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
तत्व में एक
इंटेंट फ़िल्टर. कॉन्टेंट बनाने
इस सेवा को काम के अनुरोध भेजने वाला Activity
,
साफ़ Intent
है, इसलिए किसी फ़िल्टर की ज़रूरत नहीं है. यह भी
इसका यह मतलब है कि
उसी उपयोगकर्ता आईडी से सेवा को ऐक्सेस किया जा सकता है.
अब आपके पास IntentService
की बेसिक क्लास है, इसलिए अब काम के अनुरोध भेजे जा सकते हैं
Intent
ऑब्जेक्ट की मदद से उसमें बदलाव करें. इन ऑब्जेक्ट को बनाने की प्रक्रिया
और उन्हें आपके IntentService
पर भेजने के बारे में इसमें बताया गया है
बैकग्राउंड में काम करने वाली सेवा को काम के अनुरोध भेजना.