1

I scheduled alarm manager for every 5 minutes, it's working fine for me but when I restart my device then alarm manager triggered only 1st time after that for every 5 minutes alarm manager not triggered.

In MainActivity :

int DATA_FETCHER_RC = 123;

AlarmManager mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, Receiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, DATA_FETCHER_RC, intent, PendingIntent.FLAG_UPDATE_CURRENT);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());

int interval = 5 * 60 * 1000;
int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
int minofday = calendar.get(Calendar.MINUTE);

calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minofday + 1);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND,0);

mAlarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), interval, pendingIntent);

In Receiver.Class :

public class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {  
        Toast.makeText(context, "Alaram Started", Toast.LENGTH_LONG).show();
    }
}

AndroidManifest.xml as follows :

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<receiver android:name=".Receiver" android:enabled="true"  android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
Mickael Maison
  • 25,067
  • 7
  • 71
  • 68
bujji
  • 13
  • 1
  • 5

1 Answers1

0

First of all you need add boot receiver and service in manifest:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<receiver android:name=".Receiver"
    android:enabled="true"
    android:exported="false">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

<service
    android:name=".MyService"
    android:enabled="true"
    android:process=":service"
    android:exported="false"/>

Implement service and receiver:

public class MyService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        BroadcastReceiver receiver = new Receiver();
        IntentFilter filter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
        registerReceiver(receiver, filter);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }
}

public class Receiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // receive
    }
}
YOBA
  • 1