#java #android #android-alarms #android-jobscheduler
Вопрос:
Я создаю приложение. Прочитав документацию, я узнал, что мне следует использовать Планировщик заданий вместо Диспетчера аварийных сигналов. Я использую планировщик заданий рекурсивно, но после 10… через 15 часов эта рекурсия прекращается, и мой будильник пропущен. Может кто-нибудь, пожалуйста, помочь мне с наилучшим способом реализации этого приложения. Я делюсь своим кодом планировщика заданий ниже
Вот функция запуска планировщика заданий
@RequiresApi(api = Build.VERSION_CODES.M)
public static void scheduleJob(Context context) {
ComponentName serviceComponent = new ComponentName(context, TestJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent);
builder.setMinimumLatency(10 * 60 * 1000); // wait at least 10 mins
builder.setOverrideDeadline(60 * 1000); // maximum delay 1 min
JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
jobScheduler.schedule(builder.build());
}
ниже приведен сервис по трудоустройству
public class MyJobService extends JobService {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public boolean onStartJob(JobParameters params) {
Intent service = new Intent(getApplicationContext(), MainActivity.class);
getApplicationContext().startService(service);
Toast.makeText(getApplicationContext(), "scheduled called", Toast.LENGTH_SHORT).show();
Util.scheduleJob(getApplicationContext()); // reschedule the job
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return true;
}
}
ниже приведена декларация службы в манифесте
<service
android:name=".TestJobService"
android:label="Word service"
android:permission="android.permission.BIND_JOB_SERVICE" />
Комментарии:
1.Используйте Менеджер работ это просто и
The WorkManager API is a suitable and recommended replacement for all previous Android background scheduling APIs, including FirebaseJobDispatcher, GcmNetworkManager, and Job Scheduler.
смотрите больше
Ответ №1:
Планировщик заданий больше не работает должным образом. Вам следует использовать WorkManager. Но если вы все еще хотите получить точное напоминание, вам следует использовать диспетчер предупреждений с намерением в полноэкранном режиме и попросить пользователей отключить экономию батареи для приложения. уведомление о намерении в полноэкранном режиме