How to start and stop service in android.
Here we see how to start and stop a service dynamically.
What is Service ?
A service is a
component which runs in the background without direct interaction with the
user. As the service has no user interface, it is not bound to the lifecycle of
an activity.
As there are two methods by which we start and stop service :
- startService (Intent service)
- stopService (Intent service)
In order to start a service
we need to call a method name onStartCommand(Intent
intent, int flags, int startId) and to stop a service call a method name
onDestroy() . All this work we do in
class which extends Service class.
Create a project with
the following details :
·
ProjectName: StartStopServicee
·
PackageName: sat.tuts4mobile.startstop
·
ActivityName: MainActivity
In the MainActivity.java file, copy the following code :
package
sat.tuts4mobile.startstop;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.Intent;
import
android.view.Menu;
import
android.view.View;
import
android.widget.Button;
public class
MainActivity extends Activity {
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button start = (Button)
findViewById(R.id.button1);
start.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
//
TODO Auto-generated method stub
startService(new
Intent(MainActivity.this, MyService.class));
}
});
Button stop = (Button)
findViewById(R.id.button2);
stop.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
//
TODO Auto-generated method stub
stopService(new
Intent(MainActivity.this, MyService.class));
}
});
}
@Override
public boolean
onCreateOptionsMenu(Menu menu) {
// Inflate the menu;
this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main,
menu);
return true;
}
}
Create a new class
name MyService.java file, copy the
following code :
package
sat.tuts4mobile.startstop;
import android.app.Service;
import
android.content.Intent;
import
android.os.IBinder;
import
android.widget.Toast;
public class MyService
extends Service{
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated
method stub
return null;
}
@Override
public int onStartCommand(Intent intent,
int flags, int startId) {
//
TODO Auto-generated method stub
Toast.makeText(MyService.this,
"Service Started!!!", Toast.LENGTH_SHORT).show();
return
super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
//
TODO Auto-generated method stub
Toast.makeText(MyService.this,
"Service Stoped!!!", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
}
In the activity_main.xml file, copy the
following code:
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Start Service" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="20dp"
android:text="Stop Service" />
</RelativeLayout>
In the AndroidMainfest.xml file, copy the following code:
<?xml version="1.0"
encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sat.tuts4mobile.startstop"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="sat.tuts4mobile.startstop.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<service android:name="sat.tuts4mobile.startstop.MyService"></service>
</application>
</manifest>