Уведомление Android на конкретную дату - PullRequest
9 голосов
/ 29 марта 2012

Мне нужно создать приложение, в котором я должен установить дату, и на эту конкретную дату в 9 часов я должен дать уведомление. Какой самый простой способ сделать это? Я хочу, чтобы приложение работало, даже если оно все равно было убито. Является ли AlarmManager решением?

Ответы [ 4 ]

15 голосов
/ 30 марта 2012

Чтобы запланировать действие, вы можете использовать AlarmManager

Попробуйте этот код, он работает для меня:

1 / Объявите класс BroadcastReceiver для запуска Action, этот класс может находиться внутри вашей деятельности или снаружи в другом java-файле

public class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(context, intent.getStringExtra("param"),Toast.LENGTH_SHORT).show();
    }

}

2 / В вашем методе Oncreate поместите этот код

AlarmManager alarms = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);

    Receiver receiver = new Receiver();
    IntentFilter filter = new IntentFilter("ALARM_ACTION");
    registerReceiver(receiver, filter);

    Intent intent = new Intent("ALARM_ACTION");
    intent.putExtra("param", "My scheduled action");
    PendingIntent operation = PendingIntent.getBroadcast(this, 0, intent, 0);
    // I choose 3s after the launch of my application
    alarms.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000, operation) ;   

Запустите ваше приложение. Через 3 секунды появится тост, так что вы можете изменить «System.currentTimeMillis () + 3000» со временем пробуждения.

4 голосов
/ 29 марта 2012

Вы должны использовать AlarmManager для установки будильника типа RTC_WAKEUP.

Из документов :

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

Итак, это означает, что:

  • Вам не нужен постоянно работающий сервис для этого.
  • Кому может понадобиться BroadcastListener, который слушает BOOT_COMPLETE событие для повторной регистрации сигнала тревоги после перезагрузки устройства.
3 голосов
/ 29 марта 2012

Вы должны создать приложение как сервис Android .

Сервис - это компонент приложения, который может выполнять длительные операции в фоновом режиме и не предоставляет пользователюинтерфейс.Другой компонент приложения может запустить службу, и он будет продолжать работать в фоновом режиме, даже если пользователь переключается на другое приложение.Кроме того, компонент может связываться со службой, взаимодействовать с ней и даже выполнять межпроцессное взаимодействие (IPC).Например, служба может обрабатывать сетевые транзакции, воспроизводить музыку, выполнять файловый ввод-вывод или взаимодействовать с провайдером контента, все из фона.

1 голос
/ 29 марта 2012

Аварийный диспетчер - решение, которое я предполагаю. Вы должны установить диспетчер тревог на определенное время, а затем заставить его вызвать уведомление при его запуске. и это должно быть реализовано в службе. я надеюсь, что это помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...