'How to call some task once app is in resume status in every 15minutes
I want to perform an action on every 15 minutes once the device become sleep mode or app is in background. I tried it with broadcast Receiver as shown below. But it's only working for first few minutes. After that the action is not happening.
BroadcastReceiver
public class KeepReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.d("Keep","status");
context.sendBroadcast(new Intent("KEEP_RECEIVER"));
}
}
sendBroadcast be like below.:
BroadcastReceiver broadcastReceiver2 = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Active","status");
}
});
Here onReceive from KeepReceiver is called but sendBroadcast onReceive is not working after few minutes.
Methid called on onPause of main activity
private void timeout() {
Date when = new Date(System.currentTimeMillis());
Calendar now = Calendar.getInstance();
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
try {
Intent someIntent = new Intent(getApplicationContext(), KeepReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),0, someIntent, PendingIntent.FLAG_CANCEL_CURRENT);
int repeatingInterval = 100000;
AlarmManager alarmManager =(AlarmManager)getApplicationContext().getSystemService(Activity.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), repeatingInterval , pendingIntent);
} catch(Exception e) {
e.printStackTrace();
}
}
Please advise if anything wrong with the implementation. Thanks in advance
Solution 1:[1]
There are a few problems here. You cannot reliably set a repeating alarm at 100 second (less than 2 minute) intervals, as you are trying to do. Repeating alarms are also not accurate as Android can delay them to avoid battery drain.
To achieve a repeating alarm with 15 minute intervals, you should set a single alarm using set() or setExact() (if you need exact timing) for a time 15 minutes in the future. When that alarm goes off, do whatever you need to do and then set another alarm for 15 minutes in the future, etc.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | David Wasser |
