Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

सर्विस के लिए START_STICKY कैसे इम्प्लीमेंट करें?

सर्विस के लिए START_STICKY इम्प्लीमेंट करना

उदाहरण में जाने से पहले, हमें पता होना चाहिए कि Android में सर्विस क्या है। सर्विस UI के साथ इंटरैक्ट किए बिना बैकग्राउंड ऑपरेशन करती है और एक्टिविटी नष्ट होने के बाद भी काम करती रहती है।

START_STICKY - यदि सर्विस START_STICKY रिटर्न टाइप के साथ शुरू की जाती है, तो यह बैकग्राउंड में काम करती रहेगी भले ही एक्टिविटी फोरग्राउंड में न हो। यदि एंड्रॉइड मेमोरी समस्या या अन्य कारणों से सर्विस को जबरन बंद कर देता है, तो यह उपयोगकर्ता के इंटरैक्शन के बिना सर्विस को रीस्टार्ट कर देगा।

यह उदाहरण दर्शाता है कि सर्विस के लिए START_STICKY कैसे इम्प्लीमेंट करें।

चरण 1 - नया प्रोजेक्ट बनाएं

Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।

चरण 2 - लेआउट फ़ाइल में कोड जोड़ें

res/layout/activity_main.xml में निम्नलिखित कोड जोड़ें:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Service"
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

उपरोक्त कोड में, हमने TextView लिया है, जब उपयोगकर्ता TextView पर क्लिक करता है, तो यह सर्विस शुरू और बंद करेगा।

चरण 3 - MainActivity.java में कोड जोड़ें

src/MainActivity.java में निम्नलिखित कोड जोड़ें:

package 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;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView text = findViewById(R.id.text);
        text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isMyServiceRunning(StickyService.class)) {
                    text.setText("Stopped");
                    stopService(new Intent(MainActivity.this, StickyService.class));
                } else {
                    text.setText("Started");
                    startService(new Intent(MainActivity.this, StickyService.class));
                }
            }
        });
    }

    private boolean 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;
            }
        }
        return false;
    }
}

सर्विस शुरू और बंद करने के लिए हमने इंटेंट का उपयोग किया है और कॉन्टेक्स्ट और सर्विस क्लास पास की है। अब पैकेज फोल्डर में StickyService.java नाम से सर्विस क्लास बनाएं और निम्नलिखित कोड जोड़ें:

package 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;

public class StickyService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @TargetApi(Build.VERSION_CODES.O)
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Notification Service started by user.", Toast.LENGTH_LONG).show();
        Log.d("Tutorialspoint.com", "Services is working background");
        return START_STICKY;
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Notification Service destroyed by user.", Toast.LENGTH_LONG).show();
    }
}

उपरोक्त कोड में हमने START_STICKY को कॉल किया है।

चरण 4 - Manifest.xml में कोड जोड़ें

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.andy.myapplication">
    <application
        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">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".StickyService"/>
    </application>
</manifest>

एप्लिकेशन चलाएं

अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में प्रोजेक्ट की एक्टिविटी फ़ाइल खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और डिवाइस पर आउटपुट देखें।

उपरोक्त परिणाम प्रारंभिक स्क्रीन है, TextView पर क्लिक करें, यह नोटिफिकेशन सर्विस शुरू करेगा।

उपरोक्त परिणाम में, सर्विस शुरू हो गई है, अब TextView पर क्लिक करें, यह नोटिफिकेशन सर्विस बंद करेगा।

  1. एंड्रॉइड में कस्टम ऑब्जेक्ट वाले वॉली ArrayList को रिवर्स कैसे करें एंड्रॉइड में कस्टम ऑब्जेक्ट वाले वॉली ArrayList को रिवर्स कैसे करें

    कस्टम ऑब्जेक्ट लिस्ट को रिवर्स ऑर्डर में दिखाना UserInfo कस्टम क्लास के ऑब्जेक्ट्स वाली ArrayList को Collections.reverse() से उल्टा करना। चरण 1-2: प्रोजेक्ट और लेआउट मानक सेटअप। चरण 3: MainActivity.java package com.example.myapplication; import android.os.Build; import android.os.Bundle; import a

  1. एंड्रॉइड में लाइन कैसे ड्रा करें? (Canvas/Paint) एंड्रॉइड में लाइन कैसे ड्रा करें? (Canvas/Paint)

    एंड्रॉइड में Canvas और Paint से लाइन (और शेप्स) ड्रा करना एंड्रॉइड में कस्टम ड्राइंग के लिए Canvas (ड्राइंग सतह) और Paint (स्टाइल: रंग, चौड़ाई, स्ट्रोक/फिल) उपयोग करते हैं। दो मुख्य दृष्टिकोण हैं: कस्टम View (onDraw() ओवरराइड) — **सिफारिश किया गया**, पुन: उपयोग योग्य, प्रदर्शन अच्छा। Bitmap पर ड्रा

  1. एंड्रॉइड में अलार्म मैनेजर का उपयोग करके सर्विस कैसे शुरू करें? एंड्रॉइड में अलार्म मैनेजर का उपयोग करके सर्विस कैसे शुरू करें?

    AlarmManager के साथ निर्धारित समय पर सर्विस शुरू करें यह उदाहरण दर्शाता है कि AlarmManager और PendingIntent का उपयोग करके निर्धारित समय पर बैकग्राउंड सर्विस कैसे शुरू करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में Start/Stop बटन res/layout/activity_m