Using Alarm Manager Even If App closed?
alarmmanager, android
Solution
You dont need to do `context.startservice` that what the pending intent is for, if you want the service to run right away the first time just set it to run at the current time then set the interval from the current time.
You are also setting 2 different types of repeating when you don't need to `setRepeating` is strict where `setInexact` is not and can be adjusted by the OS when it gets fired hence the inexact in it. You want one or the other not both.
Also those intervals are very small and its going to kill the battery significantly.
It should just be this
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
Long repeat = Long.parseLong(prefs.getString("update_preference", "600"));
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi);
Problem
I'm usign an `Alarm Manager` to update a widget with a `Service`. I've two different questions. First question: I'm calling the service with Alarm Manager's intent. Like this: ``` alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent i = new Intent(context, MyService.class); pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); context.startService(new Intent(context, MyService.class)); Long repeat = Long.parseLong(prefs.getString("update_preference", "600")); alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi); ``` Is it wrong? It looks and works right. But when I have looked at working services, I can't see my service name in the list. Perhaps it's not running as a single/seperate service. Just saw application name (not as a service). I'm not sure how to seperate or does it matter? Another question: Over long time, running application, which controls widgets update, is closed somehow (manually or by a task killer). Of course `Alarm Manager` gonna stop and widget's functions gonna stop too. For example button clicking. But, Twitter solved this problem. While the widget is active, if I close the main application (Twitter) -which controls widget- than click the widget, somehow widget triggering application and it starts again well. So buttons work properly. How is that possible? Any help would be appreciated.