FirebaseJobDispatcher действительно не помог, поэтому я использовал AlarmManager, и он работает как шарм.
Вот как я этого добился,
Calendar currentDate = Calendar.getInstance();
while (currentDate.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
currentDate.add(Calendar.DATE, 1);
}
currentDate.set(Calendar.HOUR_OF_DAY, hour);
currentDate.set(Calendar.MINUTE, minute);
currentDate.set(Calendar.SECOND, 0);
currentDate.set(Calendar.MILLISECOND, 0);
Intent intent = new Intent(mContext, AlarmReceiver.class);
intent.putExtra("extra info", "if needed");
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, RequestCode, intent, 0);
AlarmManager am = (AlarmManager) mContext.getSystemService(ALARM_SERVICE);
am.setRepeating(am.RTC_WAKEUP, currentDate.getTimeInMillis(), am.INTERVAL_DAY * 7, pendingIntent);
Класс AlarmReceiver для выполнения любого действия
public class AlarmReceiver extends BroadcastReceiver {
private Context mContext;
@Override
public void onReceive(Context context, Intent data) {
mContext = context;
//YOUR STUFF
}
}
Это расписание перестает работать после перезагрузки устройства пользователем. Не забудьте установить это снова после перезагрузки.
Для этого добавьте это в AndroidManifest и снова запланируйте тревогу.
<receiver
android:name=".AlarmManager.AlarmBootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Снова запланируйте тревоги в классе AlarmBootReceiver.