Android Tutorial - Services
Android Tutorial - Services
Services
Contents
1.
What is services?................................................................................................................................... 2
2.
Example ................................................................................................................................................. 6
Page 1
ANDROID TUTORIAL
RESOURCES
1. What is services?
A service is a component that runs in the background to perform long-running operations
without needing to interact with the user and it works even if application is destroyed. A service
can essentially take two states
State
Description
Started
Bound
A service has life cycle callback methods that you can implement to monitor changes in
the service's state and you can perform work at the appropriate stage. The following diagram on
the left shows the life cycle when the service is created with startService() and the diagram on the
right shows the life cycle when the service is created with bindService(): (image courtesy :
android.com )
Page 2
To create an service, you create a Java class that extends the Service base class or one of
its existing subclasses. The Service base class defines various callback methods and the most
important are given below. You don't need to implement all the callbacks methods. However, it's
important that you understand each one and implement those that ensure your app behaves the
way users expect.
Callback
Description
onStartCommand()
Page 3
onBind()
onUnbind()
The system calls this method when all clients have disconnected
from a particular interface published by the service.
onRebind()
The system calls this method when new clients have connected to
the service, after it had previously been notified that all had
disconnected in its onUnbind(Intent).
onCreate()
The system calls this method when the service is first created
using onStartCommand() or onBind(). This call is required to
perform one-time set-up.
onDestroy()
The system calls this method when the service is no longer used
and is being destroyed. Your service should implement this to clean
up any resources such as threads, registered listeners, receivers,
etc.
The following skeleton service demonstrates each of the life cycle methods
package com.tutorialspoint;
import android.app.Service;
import android.os.IBinder;
import android.content.Intent;
Page 4
import android.os.Bundle;
Page 5
/** Called when The service is no longer used and is being destroyed */
@Override
public void onDestroy() {
}
}
2. Example
This example will take you through simple steps to show how to create your own Android
Service. Follow the following steps to modify the Android application we created in Hello World
Example chapter:
Step
Description
You will use Android StudioIDE to create an Android application and name it as My
Application under a package com.example.My Application as explained in the Hello
World Example chapter.
Page 6
Run the application to launch Android emulator and verify the result of the changes
done in the application.
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.content.Intent;
import android.view.View;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
Page 7
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Let it continue running until it is stopped.
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
return START_STICKY;
}
Page 8
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}
Following will the modified content of AndroidManifest.xml file. Here we have added
<service.../> tag to include our service:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.MyApplication"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="22" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
Page 9
</activity>
</application>
</manifest>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Example of services"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point "
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_above="@+id/imageButton"
Page 10
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="Start Services"
android:onClick="startService"
android:layout_below="@+id/imageButton"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stop Services"
android:id="@+id/button"
android:onClick="stopService"
android:layout_below="@+id/button2"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2"
android:layout_alignRight="@+id/button2"
android:layout_alignEnd="@+id/button2" />
</RelativeLayout>
Page 11
Let's try to run our modified Hello World! application we just modified. I assume you had
created your AVD while doing environment setup. To run the app from Android studio, open one
of your project's activity files and click Run icon from the tool bar. Android Studio installs the
app on your AVD and starts it and if everything is fine with your set-up and application, it will
display following Emulator window
Page 12
Now to start your service, let's click on Start Service button, this will start the service and
as per our programming in onStartCommand() method, a messageService Started will appear on
the bottom of the the simulator as follows
To stop the service, you can click the Stop Service button.
Page 13
Source link
1. Content: http://www.tutorialspoint.com/android/android_resources.htm
Page 14
ANDROID TUTORIAL
Services
Direck2b
This document created by TRIEU NGO HUY (DIRECK2B), please link to me when youre intend to
use this document in some where else.
Page 15