गलत! Application
कक्षा (आईई अपना खुद का बनाओ) का विस्तार करें, फिर onCreate()
विधि में यह करें।
//Service is below
Intent serviceIntent = new Intent(getApplicationContext(), PlaylistUpdaterService.class);
startService(serviceIntent);
और मैनिफेस्ट फ़ाइल में अपनी घोषणा से उस इरादे फ़िल्टर बकवास को ले लें। निम्नलिखित की जरूरत है अपने घर गतिविधियों में होने के रूप में
<service android:name=".PlaylistUpdaterService">
छोड़ दें लक्ष्य फ़िल्टर केवल
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
कारण आप इस वजह से Application
वर्ग के रूप में जल्दी ही शुरू कर दिया है के रूप में अनुप्रयोग है करते हैं, और एंड्रॉइड फ्रेमवर्क प्रबंधन के रूप में एक वैश्विक वर्ग के रूप में कार्य करता है।
दरअसल यदि आप अपनी होम स्क्रीन पर वापस जाने के लिए हर बार सेवा चलाने की इच्छा रखते हैं, तो आपको अपनी होम क्लास onResume()
में सेवा शुरू करनी चाहिए। इसे onCreate()
में डालने से केवल सेवा शुरू हो जाएगी यदि उपयोगकर्ता पहली बार लॉन्च हो रहा है, या चलने की प्रक्रिया के बाद। या आप इसे अपने होम क्लास onCreate()
में डाल सकते हैं लेकिन यह हर बार चलाने की भी गारंटी नहीं है।
यह विधि यूआई को लॉक करता है क्योंकि गतिविधि चल रही है लेकिन चूंकि यह पारदर्शी पर सेट है, कोई भी कुछ नहीं कर सकता है। क्या इस यूआई लॉकिंग से बचने का कोई तरीका है –
@ नोबल 6 - इसे और अधिक स्पष्ट करने के लिए मेरा उत्तर अपडेट किया गया। मूल्यवान टिप्पणी के लिए धन्यवाद। – Zelimir
किसी गतिविधि का उपयोग करने की आवश्यकता नहीं है, यह ऐप के कथित स्टार्टअप समय को धीमा कर देगा क्योंकि गतिविधि शुरू करने और रोकने के ओवरहेड के कारण। एक ऐप ओवरराइड करने का निम्न दृष्टिकोण बेहतर है।हालांकि यदि आप वास्तव में गतिविधि से इसे शुरू करना चाहते हैं, तो यह बेहतर होगा कि आधार गतिविधि हो जो सेवा को डिफ़ॉल्ट व्यवहार के रूप में शुरू कर दे, यदि सेवा पहले ही शुरू नहीं हुई है और फिर सभी गतिविधियां उस बेस गतिविधि को बढ़ाती हैं। –