एक अलग प्रक्रिया के बाद उपयोगी यदि आपके आवेदन के घटकों चलाना जरूरी है कि दोनों की जरूरत नहीं है कर रहे हैं हो सकता है उपयोगकर्ता के लिए उपयोगी होने के लिए, और पृष्ठभूमि कार्य "शुद्धता" (या तो भविष्य में या भविष्य में) के लिए महत्वपूर्ण है। इसका क्लासिक उदाहरण एक ऐप है जिसमें एक ऐसी सेवा है जहां सेवा आपके एप्लिकेशन के लिए महत्वपूर्ण कुछ डेटा सहेजती या अपलोड करती है (महत्वपूर्ण अर्थ यह है कि डेटा वापस पाने का एकमात्र तरीका यह है कि उपयोगकर्ता इसे फिर से दर्ज कर लेता है!)। यह सेवा डेटा अपलोड करने या सहेजने जैसी कुछ करने के लिए ज़िम्मेदार हो सकती है, जबकि गतिविधि उपयोगकर्ता के लिए इंटरफ़ेस है। इसलिए डेवलपर्स को मेरे अगले बिंदु से उत्पन्न होने वाली समस्याओं को रोकने के लिए इन दो घटकों को कम करना चाहिए ..
एंड्रॉइड को एक संसाधन (विशेष रूप से स्मृति) बाधित वातावरण में चलाने के लिए डिज़ाइन किया गया था, इसलिए प्रक्रियाओं को समय-समय पर मारने के लिए स्मृति को खोलने के लिए मारे गए "कम मेमोरी किलर" (एलएमके) द्वारा महत्वपूर्ण लोग (यदि आप इसे Google करते हैं तो आपको इस विषय पर बहुत सारी जानकारी मिल जाएगी)। अग्रभूमि प्रक्रियाओं जैसी चीजें समझ में आती हैं क्योंकि वे वर्तमान में उपयोग में हैं, लेकिन कभी-कभी उन्हें बहुत अधिक स्मृति लेने जैसे कारणों से भी मार दिया जाता है। अब, कल्पना करें कि उपयोगकर्ता को ऐप में कुछ करने के बाद डेटाबेस में कुछ डेटा सहेजने की ज़रूरत है और आप ऐसा करने के लिए ऐसा करने के लिए एक सेवा का उपयोग करते हैं ताकि यह सुनिश्चित किया जा सके कि उपयोगकर्ता ऐप से दूर निकलता है। जब तक आप अपनी प्रक्रिया में सेवा नहीं बनाते हैं, तब तक प्रक्रिया में गतिविधि और सेवा दोनों की प्रक्रिया को मारने की संभावना है क्योंकि प्रक्रिया गैर-अग्रभूमि गतिविधि से संबंधित है। हालांकि सेवा को अपनी प्रक्रिया में रखना हमेशा जरूरी नहीं है, कई बार बस सेवा देने का अपना धागा पर्याप्त होगा; यह बहुत ही विशिष्ट अनुप्रयोग है।यदि पृष्ठभूमि में कुछ कार्य करने के लिए और उस कार्य से संबंधित कुछ कार्य करने के लिए मैं केवल कुछ सेकंड (लंबे समय तक उपयोगकर्ता को मेरे आवेदन से दूर करने के लिए और एलएमके के लिए कदम उठाने के लिए पर्याप्त) से अधिक समय लेता है, तो मैं केवल अपनी प्रक्रिया में एक सेवा रखूंगा मेरे आवेदन की "शुद्धता" (बाद में डेटा सहेजने वाला आईई)। कैशिंग जैसे कुछ के लिए, धागे से चिपके रहें, क्योंकि यदि प्रक्रिया समय-समय पर मारे जाती है तो आप बाद में उस डेटा को फिर से बना सकते हैं।
एक अलग प्रक्रिया होने का एक अन्य कारण यह है कि यदि आप वैश्विक सेवा चला रहे हैं (एक ऐसी सेवा जो आपके अलावा अन्य अनुप्रयोगों द्वारा उपयोग की जा सकती है) हो सकता है कि आप कॉन्फ़िगरेशन के लिए एक गतिविधि के माध्यम से एक इंटरफ़ेस प्रदान कर सकें।
प्रदर्शन प्रश्न के लिए, निश्चित रूप से इस तरह के कुछ के लिए प्रदर्शन हिट होगा। इंटरप्रोसेस संचार सस्ता नहीं है, इसलिए आपको वास्तव में केवल एक अलग प्रक्रिया का उपयोग करना चाहिए यदि आप उपरोक्त वर्णित विशिष्ट उपयोग मामले में फिट होते हैं। साथ ही, प्रक्रिया को बनाए रखने के लिए मेमोरी ओवरहेड की एक निश्चित राशि है, इसलिए यह एक और प्रदर्शन हिट है।
ऐसा लगता है कि यह स्टैक ओवरफ्लो थ्रेड बेहतर दस्तावेज है: [इस लिंक का पालन करें:)] (https://stackoverflow.com/questions/4658511/android-how-to-decide-whether-to-run-a-service- एक अलग-अलग प्रक्रिया) – Tobliug