उदाहरण में आने से पहले, हमें पता होना चाहिए कि android में service क्या है। सेवा यूआई के साथ बातचीत किए बिना बैक ग्राउंड ऑपरेशन करने जा रही है और यह गतिविधि नष्ट होने के बाद भी काम करती है
यह उदाहरण दर्शाता है कि किसी सेवा के लिए प्रारंभ अग्रभूमि को कैसे कार्यान्वित किया जाए।
चरण 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.widget.Toast;सार्वजनिक श्रेणी की सेवा सेवा का विस्तार करती है {@Override public IBinder onBind(इरादा आशय) {वापसी शून्य; } @ ओवरराइड पब्लिक वॉयड ऑनक्रिएट () {सुपर.ऑनक्रिएट (); } @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).शो (); स्ट्रिंग NOTIFICATION_CHANNEL_ID ="com.example.andy.myapplication"; स्ट्रिंग channelName ="मेरी पृष्ठभूमि सेवा"; अधिसूचना चैनल चान =नया अधिसूचना चैनल (NOTIFICATION_CHANNEL_ID, चैनल नाम, अधिसूचना प्रबंधक.IMPORTANCE_NONE); chan.setLightColor(Color.BLUE); chan.setLockscreenVisibility(अधिसूचना.VISIBILITY_PRIVATE); अधिसूचना प्रबंधक प्रबंधक =(अधिसूचना प्रबंधक) getSystemService (संदर्भ.NOTIFICATION_SERVICE); मुखर प्रबंधक! =शून्य; Manager.createNotificationChannel(chan); इरादा अधिसूचना इंटेंट =नया इरादा (यह, मुख्य गतिविधि। वर्ग); पेंडिंग इंटेंट पेंडिंग इंटेंट =पेंडिंग इंटेंट। गेट एक्टिविटी (यह, 0, नोटिफिकेशन इंटेंट, 0); अधिसूचना अधिसूचना =नई अधिसूचना। प्रारंभ अग्रभूमि (1337, अधिसूचना); वापसी START_STICKY; } @RequiresApi(api =Build.VERSION_CODES.N) @Override public void onDestroy() {super.onDestroy(); स्टॉपफोरग्राउंड (सच); Toast.makeText (यह, "उपयोगकर्ता द्वारा नष्ट की गई अधिसूचना सेवा।", Toast.LENGTH_LONG)। शो (); }}पूर्व>उपरोक्त कोड में हमने अधिसूचना चैनल और अधिसूचना निर्माता का उपयोग किया है जैसा कि नीचे दिखाया गया है -
स्ट्रिंग NOTIFICATION_CHANNEL_ID ="com.example.andy.myapplication";String channelName ="My Background Service";NotificationChannel chan =new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);chan.setLightColor(Color.BLUE);chan .setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);NotificationManager Manager =(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE) getSystemService(Context.NOTIFICATION_SERVICE); एसर्ट मैनेजर !=null;manager.createNotificationChannel(chan); Intent NotificationIntent =new Intent (यह, MainActivity.class); पेंडिंग इंटेंट पेंडिंग इंटेंट PendingIntent.getActivity (यह, 0, अधिसूचना इंटेंट, 0); अधिसूचना अधिसूचना =नई अधिसूचना। बिल्डर (यह, NOTIFICATION_CHANNEL_ID)। setSmallIcon (R.mipmap। (); startForeground(1337, अधिसूचना);अग्रभूमि को शुरू और बंद करने के लिए निम्नलिखित कोड का उपयोग करें -
स्टार्टफोरग्राउंड(1337, नोटिफिकेशन);स्टॉपफोरग्राउंड(सच);चरण 4 - निम्नलिखित कोड को मेनिफेस्ट.एक्सएमएल में जोड़ें
<एप्लिकेशन 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 मोबाइल डिवाइस को अपने कंप्यूटर से कनेक्ट कर लिया है। एंड्रॉइड स्टूडियो से ऐप चलाने के लिए, अपने प्रोजेक्ट की गतिविधि फ़ाइलों में से एक खोलें और टूलबार से रन आइकन पर क्लिक करें। एक विकल्प के रूप में अपने मोबाइल डिवाइस का चयन करें और फिर अपने मोबाइल डिवाइस की जांच करें जो आपकी डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा -
उपरोक्त परिणाम में एक प्रारंभिक स्क्रीन है, टेक्स्ट व्यू पर क्लिक करें, यह नीचे दिखाए गए अनुसार अधिसूचना सेवा शुरू करेगा –
उपरोक्त परिणाम में, सेवा शुरू हो गई है अब टेक्स्ट व्यू पर क्लिक करें, यह नीचे दिखाए गए अनुसार अधिसूचना सेवा बंद कर देगा -