Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to start Service using Alarm Manager in Android?

In my application, I am trying to start a service using Alarm manager. When I am clicking a button service should start in a particular time which I am giving. My code for Alarm Manager is given below:

public void onClick(View view)  {     if(view == m_btnActivate)     {         Calendar cur_cal = Calendar.getInstance();         cur_cal.setTimeInMillis(System.currentTimeMillis());         cur_cal.add(Calendar.SECOND, 50);         Log.d("Testing", "Calender Set time:"+cur_cal.getTime());         Intent intent = new Intent(DashboardScreen.this, ServiceClass.class);         Log.d("Testing", "Intent created");         PendingIntent pi = PendingIntent.getService(DashboardScreen.this, 0, intent, 0);         AlarmManager alarm_manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);         alarm_manager.set(AlarmManager.RTC, cur_cal.getTimeInMillis(), pi);         Log.d("Testing", "alarm manager set");         Toast.makeText(this, "ServiceClass.onCreate()", Toast.LENGTH_LONG).show();     } } 

And bellow is my Service Class:

    public class ServiceClass extends Service{      @Override     public void onCreate() {         // TODO Auto-generated method stub         super.onCreate();         Log.d("Testing", "Service got created");         Toast.makeText(this, "ServiceClass.onCreate()", Toast.LENGTH_LONG).show();     }      @Override     public IBinder onBind(Intent arg0) {         // TODO Auto-generated method stub         return null;     }      @Override     public void onDestroy() {         // TODO Auto-generated method stub         super.onDestroy();     }      @Override     public void onStart(Intent intent, int startId) {         // TODO Auto-generated method stub         super.onStart(intent, startId);         Toast.makeText(this, "ServiceClass.onStart()", Toast.LENGTH_LONG).show();         Log.d("Testing", "Service got started");     }  } 

If the service will start it should print the log messages in the service class. But it is not showing. Can any one help?

like image 498
Arindam Mukherjee Avatar asked Nov 30 '11 05:11

Arindam Mukherjee


People also ask

How do I turn off alarm manager on Android?

In order to delete : AlarmManager alarmManager = (AlarmManager) getSystemService(Context. ALARM_SERVICE); Intent myIntent = new Intent(getApplicationContext(), SessionReceiver. class); PendingIntent pendingIntent = PendingIntent.

What is alarm Manager?

android.app.AlarmManager. This class provides access to the system alarm services. These allow you to schedule your application to be run at some point in the future.


2 Answers

This is what I have used, for starting service after 30 seconds from current time,

Intent intent = new Intent(DashboardScreen.this, ServiceClass.class); PendingIntent pintent = PendingIntent.getService(DashboardScreen.this, 0, intent, 0); AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent); 

Try it, and let me know what happen...

EDIT:

In your manifest.xml file

 <service android:enabled="true" android:name=".ServiceClass" /> 
like image 153
user370305 Avatar answered Sep 30 '22 17:09

user370305


I know this is an old question, but just to help the people from google, here is how you can keep your service alive.

    Intent ishintent = new Intent(this, HeartBeat.class);     PendingIntent pintent = PendingIntent.getService(this, 0, ishintent, 0);     AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);     alarm.cancel(pintent);     alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),5000, pintent); 

The service is killed and restarted every 5 seconds.

like image 41
Yemanzo Avatar answered Sep 30 '22 18:09

Yemanzo