Приложение для Android, использующее планировщик заданий

#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. Но если вы все еще хотите получить точное напоминание, вам следует использовать диспетчер предупреждений с намерением в полноэкранном режиме и попросить пользователей отключить экономию батареи для приложения. уведомление о намерении в полноэкранном режиме