एंड्रॉइड सर्विसेज ट्यूटोरियल: पृष्ठभूमि में एप्लिकेशन कैसे चलाएं?

यह एंड्रॉइड सर्विसेज ट्यूटोरियल आपको यह समझने में मदद करता है कि पृष्ठभूमि पर संचालन कैसे करें जैसे कि संगीत बजाना, इसमें कोई यूआई संलग्न नहीं है

अक्सर अपने स्मार्टफोन पर कई एप्लिकेशन का उपयोग करते हुए, आप एक एप्लिकेशन से दूसरे एप्लिकेशन पर स्विच करना चाह सकते हैं, लेकिन यह भी सुनिश्चित करें कि आपके सभी एप्लिकेशन बैकग्राउंड में सक्रिय रहें। ये और कुछ नहीं बल्कि द्वारा दी जाने वाली सेवाएं हैं । तो, एंड्रॉइड सर्विसेज ट्यूटोरियल का यह लेख आपको यह समझने में मदद करेगा कि सेवाओं के साथ कैसे काम किया जाए।

मैं निम्नलिखित विषयों को कवर करूंगा:





Android सेवाएँ क्या हैं?

सेवा मूल रूप से एक प्रक्रिया है। Android सेवा एक घटक है जो प्रदर्शन करने के लिए पृष्ठभूमि में चलता हैउपयोगकर्ता के साथ बातचीत किए बिना लंबे समय तक चलने वाले संचालन और यह तब भी काम करता है जब एप्लिकेशन नष्ट हो जाता है।एक अन्य एप्लिकेशन घटक एक सेवा शुरू कर सकता है और यदि आप किसी अन्य एप्लिकेशन पर स्विच करते हैं तो भी यह पृष्ठभूमि में चलता रहता है।

इसके अतिरिक्त, एक घटक खुद को एक सेवा के लिए बाध्य कर सकता है ताकि उसके साथ बातचीत कर सके और इंटरप्रोसेस संचार भी कर सके।



ध्यान दें: Android.app.Service, ContextWrapper वर्ग का एक उपवर्ग है और Android सेवा एक थ्रेड या अलग प्रक्रिया नहीं है।

Android- सेवाएँ जीवन चक्र

Android Services जीवन चक्र में दो प्रकार की सेवाएँ हो सकती हैं। एक सेवा का जीवनचक्र दो अलग-अलग रास्तों का अनुसरण करता है, अर्थात्:

  1. शुरू कर दिया है
  2. बंधी हुई

शुरू कर दिया है



एप्लिकेशन घटक को कॉल करने पर एक सेवा शुरू की जाती है सेवा शुरू करें () तरीका। एक बार शुरू करने के बाद, एक सेवा पृष्ठभूमि में अनिश्चित काल तक चल सकती है, भले ही वह घटक जो प्रारंभ के लिए जिम्मेदार हो, नष्ट हो गया हो। इसका उपयोग करके रोका जाता है सेवा रोकें () तरीका। सेवा भी कॉल करके खुद को रोक सकती है रोक तरीका।

बंधी हुई

जब कोई एप्लिकेशन घटक कॉल करके उसे बांधता है तो एक सेवा बाध्य होती है bindService () । बाउंड सेवा एक क्लाइंट-सर्वर इंटरफ़ेस प्रदान करती है जो घटकों को सेवा के साथ बातचीत करने, अनुरोध भेजने और, परिणाम प्राप्त करने की अनुमति देती है। यह अंतर-प्रक्रिया संचार (IPC) पर प्रक्रिया करता है। ग्राहक कॉल करके सेवा को बंद कर सकता है unbindService () तरीका।

एंड्रॉइड सर्विस जीवनचक्र- Android Services Tutorial- Edureka

Android सेवाओं पर इस लेख के अगले भाग पर चलते हुए, विभिन्न चर्चा करते हैंसेवा वर्ग के तहत तरीके।

एंड्रॉइड सर्विसेज ट्यूटोरियल: तरीके

ऐसे कुछ तरीके हैं जिनके उपयोग से आप किसी भी एप्लिकेशन पर आसानी से ऑपरेशन कर सकते हैं। उनमें से कुछ हैं:

तरीकाविवरण
onStartCommand ()

इस पद्धति को तब कहा जाता है जब कोई अन्य घटक, जैसे कोई गतिविधि कहती है, सेवा को कॉल करके शुरू करने का अनुरोध करती है सेवा शुरू करें ()

जब उपयोग करके संबंधित कार्य किया जाता है तो सेवा को रोकना आपकी जिम्मेदारी है रोक या सेवा रोकें () विधियाँ।

खोलना ()

इस पद्धति को कॉल करता है जब कोई अन्य घटक कॉल करके सेवा के साथ बाइंड करना चाहता है bindService ()

उदाहरण के साथ जावा में एप्लेट क्या है

इसे लागू करने के लिए, आपको एक इंटरफ़ेस प्रदान करना होगा जिसका उपयोग ग्राहक सेवा के साथ संवाद करने के लिए करते हैं। यह एक रिटर्न IBinder वस्तु। यदि आप बाइंडिंग की अनुमति नहीं देना चाहते हैं, तो वापस लौटें अमान्य

onUnbind ()

सिस्टम इस विधि को कॉल करता है जब सभी क्लाइंट सेवा द्वारा प्रकाशित किसी विशेष इंटरफ़ेस से डिस्कनेक्ट हो जाते हैं।

OnRebind ()

इस विधि को तब कॉल करता है जब नए ग्राहक सेवा से जुड़े होते हैं क्योंकि यह पहले अधिसूचित किया गया था कि सभी में डिस्कनेक्ट हो गए हैं onUnbind (आशय)

ऑनक्रीट ()

सिस्टम इस विधि को कॉल करता है जब सेवा का उपयोग करके बनाया जाता है onStartCommand () या खोलना () । यह एक बार सेट अप करने के लिए आवश्यक है।

onDestroy ()

इस पद्धति को तब कहा जाता है जब सेवा अब उपयोग नहीं की जाती है और नष्ट हो रही है। आपकी सेवा को किसी भी संसाधन जैसे धागे, पंजीकृत श्रोता, रिसीवर, आदि को साफ करने के लिए इसे लागू करना चाहिए।

कंकाल का कोड

सार्वजनिक वर्ग MainActivity गतिविधि को बढ़ाता है {निजी TextView textView निजी ब्रॉडकास्टसीवर रिसीवर = new BroadcastReceiver () {@Override सार्वजनिक शून्य onReceive (संदर्भ प्रसंग, आशय अभिप्राय) {बंडल बंडल = आशय ।getExtras () if (बंडल! = null) {स्ट्रिंग स्ट्रिंग =। bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) यदि (resultCode == RESULT_OK) {Toast.makeText (Mainctct.this), तो Download पूरा डाउनलोड करें। डाउनलोड करें: + string, Toast.LENGTH_LONG)। .show () textView.setText ('डाउनलोड किया हुआ')} बाकी {Toast.makeText (MainActivity.this, 'Download विफल', Toast.LENGTH_LONG) .show () textView .setText ('डाउनलोड विफल')}}}}}। @Override public void onCreate (बंडल सेव्ड इनस्टांसस्टैट) {super.onCreate (saveInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @ ऑवरराइड संरक्षित शून्य को ओस्टोमेटो में स्थापित कर रहा है। ) रजिस्टररिवर (रिसीवर, नया इंटेंटफिल्टर (DownloadService.NOTIFICATION))} @ ऑवरराइड संरक्षित शून्य onPause () {super.onPause () unregisterReceiver (रिसीवर)} सार्वजनिक शून्य onClick (दृश्य देखें) {इरादे इरादे = नया इरादा (यह, DownloadService.class) // सेवा के लिए infos जो डाउनलोड करने के लिए और कहाँ फ़ाइल डाउनलोड करने के लिए store इरादे ।putExtra (DownloadService.FILENAME, 'index.html') इरादे ।putExtra (DownloadService.URL, 'www.edureka.co') startService (आशय) textView.setText ('सेवा प्रारंभ')}}

इस उदाहरण में, आप इस तरह के तरीकों को देख सकते हैं ऑनक्रीट () , फिर से शुरू करने पर () , ऑनपॉज़ () । ये विधियाँ Android में सेवाओं की संरचना बनाती हैं।

अब, इस Android सेवा ट्यूटोरियल के व्यावहारिक भाग पर जाएं, आइए देखेंकैसे एक सेवा बनाने के लिए और इसे संभाल।

डेमो

आइए देखें कि बैकग्राउंड में संगीत कैसे चलाया जाता है। ऐसा करने के लिए, मैं उपयोग करूंगा एंड्रियोड स्टूडियो

स्टेप 1

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

पैकेज com.example.mydemoapplication इम्पोर्ट androidx.appcompat.app.AppCompatActivity public class MainActivity फैली हुई है AppCompatActivity {@Override संरक्षित void onCreate (बंडल) InstanceState) {super.onCreate (saveInstanceState) (रिकवरी व्यू) (यह, Settings.System.DEFAULT_ALARM_ALERT_URI) खिलाड़ी। शुरुआत (सच) खिलाड़ी.स्टार्ट ()}}

नोट: यदि आप इसे पहली बार उपयोग कर रहे हैं, तो BIOS को सक्षम करने के लिए मत भूलना। आप अपने सिस्टम को पुनरारंभ करके ऐसा कर सकते हैं।

आपको एक वर्चुअल डिवाइस जोड़ना होगा। बस पर क्लिक करें AVD प्रबंधक खोलें।

अपनी पसंद का उपकरण चुनें और आप जाने के लिए तैयार हैं!

यह केवल तभी चलेगा जब स्क्रीन सक्रिय होगी लेकिन पृष्ठभूमि में भी इस एप्लिकेशन को काम करने के लिए, आपको कोड की कुछ और पंक्तियाँ जोड़ने की आवश्यकता है। activity_main.xml फ़ाइल।

चरण 2

एक बार जब आप संबंधित कोड चला लेते हैं, तो आप एप्लिकेशन को चला पाएंगे और बैकग्राउंड पर संगीत चला पाएंगे, अर्थात यदि कोई अन्य एप्लिकेशन खोला जाता है, तो भी यह ऑडियो चल रहा होगा।

आइए देखें कि यह कैसे किया जा सकता है।

  • जावा फोल्डर में एक और क्लास बनाएं और उसे नाम दें। यहाँ, मैंने इसे बुलाया है ” MyService ”।
  • यह वर्ग सेवा वर्ग का विस्तार करता है।
  • एक बार जब आपके पास सेवा वर्ग विधियाँ हों, तो क्लिक करके विधियों को लागू करें alt + दर्ज करें।
  • इसके बाद, आपको विधियों को ओवरराइड करना होगा। इसलिए, विकल्प प्राप्त करने के लिए विंडो पर राइट-क्लिक करें।
  • ओवरराइड विधियों को जनरेट करें, चुनें onStartCommand () , तथा OnDestroy ()।
  • संपादित करें onStartCommand () निम्नलिखित कोड जोड़कर तरीके:
MediaPlayer खिलाड़ी = MediaPlayer.create (यह, Settings.System.DEFAULT_ALARM_ALERT_URI) खिलाड़ी ।setLooping (सच) खिलाड़ी .start ()

ध्यान दें: में इस कोड को हटाएं मुख्य गतिविधि।

  • यह आपसे कथन को निकालने के लिए एक त्रुटि कहेगा। इसलिए, रिटर्न स्टेटमेंट को हटा दें और MediaPlayer को एक निजी विधि घोषित करें और वापस लौटें START_STICKY । इससे स्टार्ट स्टेटस वापस आ जाएगा।
  • जोड़ें खिलाड़ी। स्टॉप () में onDestroy () तरीका।

चरण 3

के लिए जाओ भैस का मांस और लेआउट पर जाएं, पर क्लिक करें android_main.xml आवेदन की XML फ़ाइल प्राप्त करने के लिए।

  • TextView निकालें और इसे LinearLayout के साथ बदलें और बटन जोड़ें। संबंधित कोड जोड़ें।
<लीनियर लयआउट एंड्रॉयड: ओरिएंटेशन= 'लंबवत' एंड्रॉयड: लेआउट_सक्रियता= 'मैच_परेंट' एंड्रॉयड: लेआउट_हाइट= 'रैप_ कॉन्टेंट' एंड्रॉयड: Layout_centerVertical= 'सत्य' उपकरण:नज़रअंदाज़ करना= 'मिसिंगकोस्ट्रेन्ट'><बटन एंड्रॉयड: आईडी= '@ + आईडी / बटनस्टार्ट' एंड्रॉयड: पाठ= 'सेवा प्रारंभ करें' एंड्रॉयड: लेआउट_सक्रियता= 'रैप_ कॉन्टेंट' एंड्रॉयड: लेआउट_हाइट= 'मैच_परेंट'/><बटन एंड्रॉयड: आईडी= '@ + आईडी / बटन' एंड्रॉयड: पाठ= 'सेवा रोकें' एंड्रॉयड: लेआउट_सक्रियता= 'रैप_ कॉन्टेंट' एंड्रॉयड: लेआउट_हाइट= 'मैच_परेंट'/>लीनियर लयआउट>
  • एक बार ऐसा करने के बाद, वापस जाएं मुख्य गतिविधि XML फ़ाइल और लिंक करने के लिए संबंधित कोड को वर्ग और जोड़ें MyServiceClass।
पैकेज com.example.newproject इम्पोर्ट androidx.appcompat.app.AppCompatActivity public class MainActivity फैली हुई है AppCompatActivity के इम्प्लॉइज View.OnClickListener {प्राइवेट बटन स्टार्ट, स्टॉप: ऑवरराइड प्रोटेक्टेड वेक ऑनक्रिएट (बंडल saveInstanceState) {super.onCreate (save.Creative) .activity_main) start = (बटन) findViewById (R.id.buttonStart) stop = (बटन) findViewById (R.id.buttonStop) start.setOnClickListener (यह) stop.setOnClickListener (यह)} @Override public void onClick (देखें) ) {if (देखें == प्रारंभ) {startService (नई आशय (यह, MyServiceClass.class))} अन्य यदि (देखें == रोकें) {stopService (नया इरादा (यह, MyServiceClass.class))}}}}

चरण 4

एक बार जब आप कक्षाओं को लिंक कर रहे हों, तो कोड को चलाएं।

नोट: AndroidManifiest.xml फ़ाइल में सेवा वर्ग नाम जोड़ें।

अगला, कोड को चलाने दें।

एक बार जब आप सेवा शुरू करते हैं, तो यह पृष्ठभूमि पर चलेगा, भले ही एक और एप्लिकेशन खोला गया हो। आप बटन पर क्लिक करके सेवा शुरू या बंद कर सकते हैं।

यह एक सरल डेमो है जहां आपने सीखा है कि एंड्रॉइड सर्विसेज के साथ कैसे काम करना है।

तो इसके साथ, हम 'एंड्रॉइड सर्विसेज ट्यूटोरियल' पर इस लेख के अंत में आते हैं।मुझे उम्मीद है कि आप इस ब्लॉग में शामिल विषयों के साथ स्पष्ट हैं।

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

कोई प्रश्न है? इस 'Android Services Tutorial' ब्लॉग की टिप्पणियों में उनका उल्लेख करना न भूलें। हम आपसे फिर बात करेंगे।