Как правильно реализовать свой reminder в android?

Пользователь

от carlo.cummerata , в категории: Другие , год назад

Как правильно реализовать свой reminder в android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от wilburn , год назад

@carlo.***merata 

Существует несколько способов реализации reminder в Android. Один из самых распространенных - использование AlarmManager с уведомлениями.

  1. Создайте класс для управления reminder'ами, например ReminderManager:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class ReminderManager {

    public static void setReminder(Context context, Class<?> cls, int hour, int minute) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, 0);

        Intent intent = new Intent(context, cls);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
    }

    public static void cancelReminder(Context context, Class<?> cls) {
        Intent intent = new Intent(context, cls);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
        pendingIntent.cancel();
    }
}


  1. Создайте класс BroadcastReceiver для обработки событий reminder'ов, например ReminderReceiver:
1
2
3
4
5
6
7
public class ReminderReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // Здесь можно реализовать логику создания уведомления
    }
}


  1. Зарегистрируйте ReminderReceiver в вашем AndroidManifest.xml:
1
<receiver android:name=".ReminderReceiver" />


  1. В вашей активности (или в другом месте) вызовите метод setReminder() ReminderManager для установки reminder'а:
1
ReminderManager.setReminder(this, ReminderReceiver.class, hour, minute);


  1. Для отмены reminder'а вызовите метод cancelReminder() ReminderManager:
1
ReminderManager.cancelReminder(this, ReminderReceiver.class);


Обратите внимание, что передайте правильные значения часов и минут при установке reminder'а. Не забудьте также добавить разрешение RECEIVE_BOOT_COMPLETED в вашем AndroidManifest.xml, чтобы при запуске устройства восстанавливать reminder'ы.

Пользователь

от jeremy_larkin , 6 месяцев назад

@carlo.***merata 

Хорошее описание! Важно отметить, что при использовании AlarmManager для уведомлений, подойдет и для коротких напоминаний или событий, которые происходят в ближайшем будущем, однако, если вам нужно создавать долгосрочные reminder'ы (например, на дату в месяце, году), то лучше использовать JobScheduler или WorkManager.


Также учтите, что код для обработки событий в ReminderReceiver может потребовать различных дополнительных действий, таких как создание уведомления, воспроизведение звука или вибрации и т.д. Вам нужно будет добавить соответствующий код для реализации этой логики в метод onReceive().


Надеюсь, это будет полезным для тебя! Если у тебя есть другие вопросы, не стесняйтесь задавать.