एक उदाहरण में जाने से पहले, हमें पता होना चाहिए कि android में कौन सी service है। सेवा यूआई के साथ बातचीत किए बिना बैक ग्राउंड ऑपरेशन करने जा रही है और यह गतिविधि नष्ट होने के बाद भी काम करती है।
START_STICKY - यदि सेवा START_STICKY रिटर्न प्रकार के साथ शुरू की जाती है, तो यह बैक ग्राउंड में काम करने जा रही है, भले ही गतिविधि अग्रभूमि न हो, अगर मेमोरी समस्या या कुछ अन्य मामलों के कारण एंड्रॉइड ने जबरदस्ती सेवा बंद कर दी, तो यह उपयोगकर्ता की बातचीत के बिना सेवा को पुनरारंभ करेगा।
यह उदाहरण दर्शाता है कि किसी सेवा के लिए START_STICKY को कैसे लागू किया जाए।
चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें।
<टेक्स्ट व्यू एंड्रॉइड:आईडी ="@ + आईडी / टेक्स्ट" एंड्रॉइड:लेआउट_विड्थ ="रैप_कंटेंट" एंड्रॉइड:लेआउट_हाइट ="रैप_कंटेंट" एंड्रॉइड:टेक्स्ट ="स्टार्ट सर्विस" एंड्रॉइड:टेक्स्टसाइज =" 25sp" ऐप:layout_constraintBottom_toBottomOf ="पैरेंट" ऐप:layout_constraintLeft_toLeftOf ="पैरेंट" ऐप:layout_constraintRight_toRightOf ="पैरेंट" ऐप:layout_constraintTop_toTopOf ="parent" /> उपरोक्त कोड में, हमने टेक्स्ट व्यू लिया है, जब उपयोगकर्ता टेक्स्ट व्यू पर क्लिक करता है, तो यह सेवा शुरू कर देगा और सेवा बंद कर देगा। चरण 3 - निम्न कोड को src/MainActivity.java
में जोड़ें <पूर्व>पैकेज com.example.andy.myapplication;import android.app.ActivityManager;import android.content.Context;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle आयात android.util.Log; आयात android.view.View; आयात android.widget.TextView; सार्वजनिक वर्ग MainActivity AppCompatActivity को बढ़ाता है {@Override संरक्षित शून्य onCreate (बंडल सेव्ड इंस्टेंसस्टेट) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); अंतिम टेक्स्ट व्यू टेक्स्ट =findViewById (R.id.text); text.setOnClickListener (नया दृश्य। OnClickListener () {@ ओवरराइड सार्वजनिक शून्य पर क्लिक करें (देखें v) {अगर (isMyServiceRunning (service.class)) {text.setText ("रोक दिया गया"); स्टॉप सर्विस (नया इरादा (मेनएक्टिविटी। यह, सेवा) .class)); } और {text.setText("Started"); startService(new Intent(MainActivity.this, service.class)); }}}); } निजी बूलियन isMyServiceRunning(Class> serviceClass) { activityManager Manager =(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo service:manager.getRunningServices(Integer.MAX_VALUE)) {if (serviceClass.getName().equals(service.service.getClassName())) { return true; } } विवरण झूठा है; }}पूर्व>उपरोक्त कोड में सेवा शुरू करने और रोकने के लिए। हमने आशय और पारित संदर्भ और सेवा वर्ग का उपयोग किया है। अब पैकेज फोल्डर में service.class के रूप में एक सर्विस क्लास बनाएं और निम्न कोड जोड़ें -
<पूर्व>पैकेज com.example.andy.myapplication;import android.annotation.TargetApi;import android.app.Notification;import android.app.NotificationChannel;import android.app.NotificationManager;import android.app.PendingIntent;import android. app.Service;import android.content.Context;import android.content.Intent;import android.graphics.Color;import android.media.MediaPlayer;import android.os.Build;import android.os.IBinder;import android.support .annotation.RequiresApi;import android.support.v4.app.NotificationCompat;import android.util.Log;import android.widget.Toast;सार्वजनिक श्रेणी सेवा सेवा का विस्तार करती है {@Override public IBinder onBind(Intent Intent) { return null; } @ ओवरराइड पब्लिक वॉयड ऑनक्रिएट () {सुपर.ऑनक्रिएट (); } @TargetApi(Build.VERSION_CODES.O) @RequiresApi(api =Build.VERSION_CODES.JELLY_BEAN) @Override public int onStartCommand(Intent Int, int flags, int startId) { Toast.makeText (यह, "उपयोगकर्ता द्वारा शुरू की गई अधिसूचना सेवा। ", टोस्ट.LENGTH_LONG).शो (); Log.d ("Tutorialspoint.com", "सेवाएँ पृष्ठभूमि में काम कर रही हैं"); वापसी START_STICKY; } @RequiresApi(api =Build.VERSION_CODES.N) @Override public void onDestroy() {super.onDestroy(); Toast.makeText (यह, "उपयोगकर्ता द्वारा नष्ट की गई अधिसूचना सेवा।", Toast.LENGTH_LONG)। शो (); }}पूर्व>उपरोक्त कोड में हमने START_STICKY को कॉल किया है, अब नीचे दिखाए अनुसार सेवा जानकारी की जांच करें -
चरण 4 -मेनिफेस्ट.xml में निम्न कोड जोड़ें
<एप्लिकेशन 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"> <गतिविधि android:name =".MainActivity"> <श्रेणी android:name ="android.intent.category.LAUNCHER" /> आइए अपना एप्लिकेशन चलाने का प्रयास करें। मुझे लगता है कि आपने अपने वास्तविक Android मोबाइल डिवाइस को अपने कंप्यूटर से कनेक्ट कर लिया है। एंड्रॉइड स्टूडियो से ऐप चलाने के लिए, अपने प्रोजेक्ट की गतिविधि फ़ाइलों में से एक खोलें और टूलबार से रन आइकन पर क्लिक करें। एक विकल्प के रूप में अपने मोबाइल डिवाइस का चयन करें और फिर अपने मोबाइल डिवाइस की जांच करें जो आपकी डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा -
उपरोक्त परिणाम में एक प्रारंभिक स्क्रीन है, टेक्स्ट व्यू पर क्लिक करें, यह नीचे दिखाए गए अनुसार अधिसूचना सेवा शुरू करेगा -
उपरोक्त परिणाम में, सेवा शुरू हो गई है अब टेक्स्ट व्यू पर क्लिक करें, यह नीचे दिखाए गए अधिसूचना सेवा को रोक देगा -