‘i28ia1, 1:92 PM Android - Services
Android - 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 -
Sr.No. State & Description
a Started
A service is started when an application component, such as an activity, starts it by
calling startService(). Once started, a service can run in the background indefinitely,
‘even if the component that started it is destroyed.
7 Bound
A service is bound when an application component binds to it by calling bindService().
A bound service offers a client-server interface that allows components to interact with
the service, send requests, get results, and even do so across processes with
interprocess communication (IPC).
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 )
htps:wwltorilspoint com/android/android_servces.him wm‘nia8as, 192 PM Android - Services
(Giientinteracts with the service)
=)
—— |
(oe fer
| T
aa =
UN Bounded Service Bounded services
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.
htps:hwwlterilspoint com/android/android_servces.htm
am‘i28ian, 1:92 PM
Sr.No.
fl
Android - Services
Callback & Description
onStartCommand()
The system calls this method when another component, such as an activity, requests
that the service be started, by calling startService(). If you implement this method, it is
your responsibility to stop the service when its work is done, by calling sfopSeif() or
stopService() methods.
onBind()
The system calls this method when another component wants to bind with the service
by calling bindService(). If you implement this method, you must provide an interface
that clients use to communicate with the service, by returning an /Binder object. You
must always implement this method, but if you don't want to allow binding, then you
should return null
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 onStart{Command()
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;
htpsswwltorilspoint com/android/android_servces.him
ant‘vasa, 132 PM ‘Androl - Services
import android.os.1Binder;
import android. content.Intent;
import android.os.Bundle;
public class HelloService extends Service {
/** indicates how to behave if the service is killed */
int mStartMode;
/** interface for clients that bind */
Binder mBinder;
/** indicates whether onRebind should be used */
boolean mAllowRebind;
/** Called when the service is being created. */
@override
public void onCreate() {
/** The service is starting, due to a call to startService() */
@0verride
public int onStartCommand(Intent intent, int flags, int startId) {
return mStartMode;
/** A client is binding to the service with bindService() */
@override
public IBinder onBind(Intent intent) {
return mBinder;
/** Called when all clients have unbound with unbindService() */
@override
public boolean onUnbind(Intent intent) {
return mAllowRebind;
/** Called when a client is binding to the service with bindService()*/
@override
public void onRebind(Intent intent) {
htpsswwtterilspoint com/android/android_servces.him ae‘iagas, 192 PM Android - Services
/** Called when The service is no Longer used and is being destroyed */
@0verride
public void onDestroy() {
+
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
4 Youwill use Android StudiolDE to create an Android application and name it as My
Application under a package com.example.tutorialspoint7.myapplication as explained in
the Hello World Example chapter.
Modify main activity file MainActi
java to add startService() and stopService() methods.
Create a new java file MyService java under the package com.example.My Application.
This file will have implementation of Android service related methods.
Define your service in AndroidManifest.xm! file using tag. An application can
have one or more services without any restrictions.
Modify the default content of res/layout/activity_main.xm! file to include two buttons in
linear layout.
No need to change any constants in res/values/strings.xmi file. Android studio take care of
string values
Run the application to launch Android emulator and verify the result of the changes done
in the application
Following is the content of the modified main activity file MainActivity.java. This file can include
each of the fundamental life cycle methods. We have added startService() and stopService()
methods to start and stop the service.
package com.example.tutorialspoint7.myapplication;
import android. content.Intent;
import android. support.v7.app.AppCompatActivity;
import android.os.Bundle;
htpsswwtterilspoint com/android/android_servces.him st‘28a, 1:92 PM Android - Services
import android.os.Bundle;
import android. app.Activity;
import android.util.Log;
import android. view. View;
public class MainActivity extends Activity {
String msg = "Android
/** Called when the activity is first created. */
@override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState) ;
setContentView(R. layout activity_main) ;
Log.d(msg, "The onCreate() event");
public void startService(View view) {
startService(new Intent(getBaseContext(), MyService.class));
// Method to stop the service
public void stopService(View view) {
stopService(new Intent(getBaseContext(), MyService.class));
Following is the content of MyService.java. This file can have implementation of one or more
methods associated with Service based on requirements. For now we are going to implement only
two methods onStartCommand() and onDestroy() ~
package com.example.tutorialspoint7.myapplication;
import. android. app.Service;
import android. content. Intent;
import android.os.1Binder;
import android. support .annotation.Nullable;
import android.widget. Toast
yas
* Created by TutorialsPoint7 on 8/23/2016.
/
public class MyService extends Service {
@Nullable
htpsswwlutarilspoint com/android/android_servces.him ant‘vasa, 132 PM ‘Androl - Services
@override
public IBinder onBind(Intent intent) {
return null;
@override
public int onStartConmand(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;
@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
tag to include our service —
" Mainactivity">
«service android:name=".MyService" />
htpsswwtterilspoint com/android/android_servces.him mm‘iagas, 192 PM Android - Services
Following will be the content of res/layout/activity_main.xm| file to include two buttons -
androi
content"
Let's try to run our modified Hello World! application we just modified. | 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 -
htps:wwltorilspoint com/android/android_servces.him
ant‘nia8as, 192 PM Android - Services
7109 aM
Example of services
Tutorials point
tutorialspoint
SIMPLY EASYLEARNING
‘START SERVICES
‘STOP SERVICES.
Now to start your service, let's click on Start Service button, this will start the service and as per
our programming in onStarfCommand() method, a message Service Started will appear on the
bottom of the the simulator as follows ~
htps:wwltorilspoint com/android/android_servces.him sont‘nia8as, 192 PM Android - Services
Example of services
Tutorials point
tutorialspoint
SIMPLY EASYLEARNING
‘START SERVICES
‘STOP SERVICES.
To stop the service, you can click the Stop Service button.
htps:wwltorilspoint com/android/android_servces.him nm