In this program, I also increment a counter once the service starts to show that the service is continuously running in the background while we do other work. When we stop the service we are able to see the updated count.
Let us look at the code:
I have created a class NotifyService which extends the service class. This is the service class that will be started through the activity – ServiceLauncher
Now let us see what the service does?
It does 3 things – Toast a message that the service has started. Update the status bar with a notification. Finally start incrementing the counter. All this is done in the onCreate() method of the NotifyService Class
Toast.makeText(this,"Service created at " + time.getTime(), Toast.LENGTH_LONG).show();
showNotification();
incrementCounter();
Here is the showNotification() Method:
private void showNotification() {
CharSequence text = getText(R.string.service_started);
Notification notification = new Notification(R.drawable.android, text, System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, ServiceLauncher.class), 0);
notification.setLatestEventInfo(this, getText(R.string.service_label),
text, contentIntent);
nm.notify(R.string.service_started, notification);
}
Finally, here is the method for incrementing the counter incrementCounter():
private void incrementCounter() {
timer.scheduleAtFixedRate(new TimerTask(){ public void run() {counter++;}}, 0, 1000L);
}
On stopping the service, it obviously has to do the reverse actions: stop the counter, remove the status bar notification and then toast a message to the end user saying the service has stopped! So here it is:
shutdownCounter();
nm.cancel(R.string.service_started);
Toast.makeText(this, "Service destroyed at " + time.getTime() + "; counter is at: " + counter, Toast.LENGTH_LONG).show();
counter=null;
This is the code in the onDestroy() method in the NotifyService class.
No comments:
Post a Comment