Open In App

Intent Service in Android with Example

Last Updated : 06 Feb, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

An IntentService is a subclass of Service in Android that is used to handle asynchronous requests (expressed as “Intents”) on demand. It runs in the background and stops itself once it has processed all the intents that were sent to it.

An IntentService in Java and Kotlin:

Kotlin




class MyIntentService : IntentService("MyIntentService") {
  
    override fun onHandleIntent(intent: Intent?) {
        // Perform some background task here
    }
}


Java




public class MyIntentService extends IntentService {
  
    public MyIntentService() {
        super("MyIntentService");
    }
  
    @Override
    protected void onHandleIntent(Intent intent) {
        // Perform some background task here
    }
}


You can start an IntentService by creating an Intent object and passing it to the startService() method. The Intent should contain any data that you want to pass to the service.

Kotlin




val intent = Intent(this, MyIntentService::class.java)
intent.putExtra("data", "my data")
startService(intent)


Java




Intent intent = new Intent(this, MyIntentService.class);
intent.putExtra("data", "my data");
startService(intent);


IntentService runs on a single background thread, so if you have multiple requests, they will be queued and processed one after the other, it could also stop itself after processing all intents. For better performance and to avoid ANR (Application not responding), you should offload long-running or heavy tasks to a separate thread within the onHandleIntent() method. An IntentService is a good choice when you have a small number of tasks that need to be done in the background, and you don’t need to run them concurrently.

Step-by-Step Implementation

Step 1: Create a New Project in Android Studio

To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. The code for that has been given in both Java and Kotlin Programming Language for Android.

Step 2: Declaring IntentService in the AndroidManifest.xml File

Go to the AndroidManifest.xml file and declare this service within the <application> element.

<service
    android:name=".ExampleIntentService"
    android:exported="false" />

Step 3: Working with the XML Files

Next, go to the activity_main.xml file, which represents the UI of the project. Below is the code for the activity_main.xml file. Comments are added inside the code to understand the code in more detail.

XML




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">
  
    <!-- Button to start the service -->
    <Button
        android:id="@+id/start_service_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Service" />
    
</LinearLayout>


Create a new class called ExampleIntentService that extends IntentService. Below is the code for the activity_example_intent_service.xml file. Comments are added inside the code to understand the code in more detail.

XML




<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ExampleIntentService">
  
    <!-- TextView to display the title of the activity -->
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Second Activity"
        android:textSize="32dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    
</androidx.constraintlayout.widget.ConstraintLayout>


Step 4: Working with the MainActivity & ExampleIntentService File

Go to the MainActivity File and refer to the following code. Below is the code for the MainActivity File. Comments are added inside the code to understand the code in more detail.

Kotlin




import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Get a reference to the start service button in the layout
        val startServiceButton = findViewById<Button>(R.id.start_service_button)
         
        // Set an OnClickListener for the button
        startServiceButton.setOnClickListener {
            // Create an Intent to start 
            // the ExampleIntentService
            val intent = Intent(this@MainActivity, ExampleIntentService::class.java)
            // Start the service
            // using the intent
            startService(intent)
        }
    }
}


Java




import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // Get a reference to the start service button in the layout
        Button startServiceButton = findViewById(R.id.start_service_button);
          
        // Set an OnClickListener for the button
        startServiceButton.setOnClickListener(v -> {
            // Create an Intent to start
            // the ExampleIntentService
            Intent intent = new Intent(MainActivity.this, ExampleIntentService.class);
            // Start the service 
            // using the intent
            startService(intent);
        });
    }
}


Override the onHandleIntent() method to specify the task that you want to perform in the background. Below is the code for the ExampleIntentService File. Comments are added inside the code to understand the code in more detail.

Kotlin




import android.app.IntentService
import android.content.Intent
import android.util.Log
  
class ExampleIntentService : IntentService("ExampleIntentService") {
    // Constructor with a name for the worker thread
    // The name is used only for debugging purposes.
    constructor(): super("ExampleIntentService")
  
    // This method is called on a worker thread 
    // with a request to process.
    override fun onHandleIntent(intent: Intent?) {
        // Perform a task in the background
        Log.d("ExampleIntentService", "Task in progress")
        try {
            // Perform the task for 5 seconds
            Thread.sleep(5000)
        } catch (e: InterruptedException) {
            // Print the stack trace 
            // if an interruption occurs
            e.printStackTrace()
        }
        Log.d("ExampleIntentService", "Task completed")
    }
}


Java




import android.app.IntentService;
import android.content.Intent;
import android.util.Log;
import androidx.annotation.Nullable;
  
public class ExampleIntentService extends IntentService {
    // Constructor
    public ExampleIntentService() {
        // Call superclass constructor with 
        // the name of the worker thread
        super("ExampleIntentService");
    }
  
    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        // Perform a task in the background
        Log.d("ExampleIntentService", "Task in progress");
          
        // Simulate a long running task by 
        // sleeping the thread for 5 seconds
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // Print stack trace if an 
            // InterruptedException occurs
            e.printStackTrace();
        }
        Log.d("ExampleIntentService", "Task completed");
    }
}


Output:

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads