Как вывести Alertdialog каждые 2 часа? - PullRequest
0 голосов
/ 11 июня 2019

После входа в систему я хочу показывать диалог, используя AlertDialog каждые 2 часа.

Попробовал код ниже:

 private void ShowDialog() {

        new SweetAlertDialog(getContext())
                .setTitleText("Attention!")
                .setContentText("Have You Checked Followup list? Check Here !!")
                .setConfirmText("Followup List")
                .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                    @Override
                    public void onClick(SweetAlertDialog sweetAlertDialog) {
                           ShowFollowupList();
                        sweetAlertDialog.dismissWithAnimation();

                    }
                })
                .setCancelButton("Cancel", new SweetAlertDialog.OnSweetClickListener() {
                    @Override
                    public void onClick(SweetAlertDialog sDialog) {
                        sDialog.dismissWithAnimation();
                    }
                })
                .show();
    }

Ответы [ 3 ]

0 голосов
/ 11 июня 2019

Используя Диспетчер работ, вы можете отобразить его.

Ссылка: https://developer.android.com/topic/libraries/architecture/workmanager

Планирование задач с помощью WorkManager API упрощает планирование отложенных, асинхронных задачкоторые должны запускаться, даже если приложение закрывается или устройство перезагружается.

0 голосов
/ 11 июня 2019

Вы можете использовать AlarmManager для его достижения.

Сначала создайте класс Receiver, расширяющий BroadcastReceiver, как показано ниже.

public class YourReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // show your dialog here
    }
}

После этого создайте AlarmManagerи PendingIntent экземпляр для установки будильника, как показано ниже.

public void setAlarm(Context context, int requestCode) {
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, YourReceiver.class);

    // different request code enable you to set alarm more than one
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    final long everyTwoHours = 2 * 60 * 60 * 1000; // in milliseconds
    alarmManager.setInexactRepeating(
                AlarmManager.RTC, calendar.getTimeInMillis(), everyTwoHours, pendingIntent);
}
0 голосов
/ 11 июня 2019

Использование WorkManager для задачи планирования в background и foreground

Пример для периодического запроса

PeriodicWorkRequest request= new PeriodicWorkRequest.Builder(WorkerClass.class,
                            2, TimeUnit.HOURS).addTag("TAG").build()
WorkManager.getInstance().enqueueUniquePeriodicWork("TAG", ExistingPeriodicWorkPolicy.KEEP, request);

Создать рабочий класс

public class WorkerClass extends Worker {
    @Override
    public Worker.WorkerResult doWork() {

        // Do the work here

        // Indicate success or failure with your return value:
        return WorkerResult.SUCCESS;

        // (Returning RETRY tells WorkManager to try this task again
        // later; FAILURE says not to try again.)
    }
}

добавить это в build.gradle

реализация 'android.arch.work:work-runtime:2.1.0-alpha01'

проверить последнюю версию документа https://developer.android.com/jetpack/androidx/releases/work

...