How to run Background Service in Android Studio using Kotlin.

Background services in Android. Learn what services are and how to implement them in Android with tutorials on rrtutors.com. Start coding today!

Last updated Dec 18, 2021

In this android example, we will see how to run a Background Service in Android Studio by using Kotlin Language.

Implementation:
 

Step 1: Create a new Project in android studio.

Go to File > New > New Project > Empty Activity > Next > Enter Name > Select Language Kotlin > Finish

 

Step 2: Go to activity_main.xml file and add the following code

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="RRTUTORS"
        android:textAlignment="center"
         android:textColor="@color/purple_500"
        android:textSize="32sp"
        android:textStyle="bold" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Start Background Service"
        android:textSize="16sp"
        android:textStyle="bold" />
</RelativeLayout>

 

Step 3: Create a new kotlin file.

app > new > Kotlin File(Class) > Enter Name(MyService) > Enter

 

Step 4: Open MyService.kt file and add the following code.

class MyService : Service() {
    override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
        onTaskRemoved(intent)
        Toast.makeText(
            applicationContext, "This is a Service running in Background",
            Toast.LENGTH_SHORT
        ).show()
        return START_STICKY
    }
    override fun onBind(intent: Intent): IBinder? {
        // TODO: Return the communication channel to the service.
        throw UnsupportedOperationException("Not yet implemented")
    }
    override fun onTaskRemoved(rootIntent: Intent) {
        val restartServiceIntent = Intent(applicationContext, this.javaClass)
        restartServiceIntent.setPackage(packageName)
        startService(restartServiceIntent)
        super.onTaskRemoved(rootIntent)
    }
}

 

Step 5: Add following code in AndroidManifest.xml file inside tag.

          <service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true" />

 

Step 6: Open MainActivity.kt file and add the following code below setContentView(R.layout.activity_main).

 val button: Button = findViewById(R.id.button)
        button.setOnClickListener {
            startService(Intent(applicationContext, MyService::class.java))

 

Step 7: Run the app on emulator or real device, you will get the output as following in video 
 

Complete Source Code of Run Background Service Example 
 

activity_main.xml file


  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="RRTUTORS"
        android:textAlignment="center"
         android:textColor="@color/purple_500"
        android:textSize="32sp"
        android:textStyle="bold" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Start Background Service"
        android:textSize="16sp"
        android:textStyle="bold" />
</RelativeLayout>

 

MainActivity.kt file

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button

class ServiceActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val button: Button = findViewById(R.id.button)
        button.setOnClickListener {
            startService(Intent(applicationContext, MyService::class.java)) }

    }
}

 

MyService.kt file

import android.app.Service
import android.content.Intent
import android.os.IBinder
import android.widget.Toast

class MyService : Service() {
    override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
        onTaskRemoved(intent)
        Toast.makeText(
            applicationContext, "This is a Service running in Background",
            Toast.LENGTH_SHORT
        ).show()
        return START_STICKY
    }
    override fun onBind(intent: Intent): IBinder? {
        // TODO: Return the communication channel to the service.
        throw UnsupportedOperationException("Not yet implemented")
    }
    override fun onTaskRemoved(rootIntent: Intent) {
        val restartServiceIntent = Intent(applicationContext, this.javaClass)
        restartServiceIntent.setPackage(packageName)
        startService(restartServiceIntent)
        super.onTaskRemoved(rootIntent)
    }
}

 

Conclusion: In this android example we have covered how to run a background service in Android Studio by using Kotlin Language.

Related Tutorials & Resources