Мне нужно создать приложение, в котором я должен установить дату, и в эту конкретную дату в 9 часов я должен дать уведомление. Каков самый простой способ сделать это? Я хочу, чтобы приложение работало, даже если его все равно убьют. Является ли AlarmManager решением?
Уведомление Android в определенную дату
Ответы (4)
Чтобы запланировать действие, вы можете использовать AlarmManager
Попробуйте этот код, он работает для меня:
1/Объявите класс BroadcastReceiver для запуска действия, этот класс может находиться внутри вашей активности или снаружи в другом 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» на время пробуждения.
Вы должны использовать AlarmManager
для установки будильника типа RTC_WAKEUP
.
Из документов:
Когда срабатывает будильник, зарегистрированное для него намерение передается системой, автоматически запуская целевое приложение, если оно еще не запущено. Зарегистрированные будильники сохраняются, пока устройство находится в спящем режиме (и могут дополнительно разбудить устройство, если они сработают в это время), но будут удалены, если устройство будет выключено и перезагружено. >.
Итак, это означает, что:
- Для этого вам не нужен постоянно работающий сервис.
- Может потребоваться
BroadcastListener
, который прослушивает событие BOOT_COMPLETE, чтобы перерегистрировать аварийный сигнал после перезагрузки устройства.
Вам следует создать приложение как службу Android.
Служба — это компонент приложения, который может выполнять длительные операции в фоновом режиме и не предоставляет пользовательского интерфейса. Другой компонент приложения может запустить службу, и она будет продолжать работать в фоновом режиме, даже если пользователь переключится на другое приложение. Кроме того, компонент может связываться со службой для взаимодействия с ней и даже выполнять межпроцессное взаимодействие (IPC). Например, служба может обрабатывать сетевые транзакции, воспроизводить музыку, выполнять файловый ввод-вывод или взаимодействовать с поставщиком содержимого в фоновом режиме.
Я думаю, менеджер тревог - это решение. вы должны установить диспетчер сигналов тревоги на определенное время, а затем заставить его вызывать уведомление при запуске. и это должно быть реализовано в службе. я надеюсь, что это помогло.