В моем мобильном приложении. Мне нужно вызвать BroadcastReceiver, который покажет некоторое всплывающее/системное уведомление.Лучший способ запуска BroadcastReceiver
время запуска этого BroadcastReceiver
- Каждый день он должен вызвать в 13:00.
- После первого запуска в 13:00. Он должен запускаться каждые 30 секунд.
- Он должен прекратить срабатывание каждые 30 секунд после 14:00.
Я попытался следующим образом
Использование 2 BroadcastReceiver в
BroacastReceiver 1 называется использованием AlaramManager
Intent intent = new Intent("broadcast.receiver.one.action");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
intent, 0);
AlarmManager manager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
manager.setRepeating(AlarmManager.RTC_WAKEUP, oneAmCalenderObject.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent);
BroadcastReceiver 1 начнется в 13:00 ежедневно и содержит таймер который начнет BroacastReciever 2 каждые 30 секунд.
timer.schedule(new TimerTask() {
public void run() {
if (isLessThanTwoPM()) {
callBroadcastReceiverTwo();
} else {
timer.cancel();
}
}
}, 0, 30 * (1000 * 1));
Я хотел бы знать, если есть лучший способ.
Это очень сумасшествие. Итак, другими словами, вы хотите, чтобы устройство не спало целых один час, и в итоге разрядите большую часть батареи? –
Ну, в соответствии с требованиями наших клиентов нам нужно вытащить данные с сервера каждые 30 секунд в этот час. Примечание. Push-уведомления не являются опцией. – user3616287
для начала трансляции каждые 30 секунд. вы можете настроить alarmmanager на boradcast на 1300, а затем на 1400 для остановки трансляции каждые 30 секунд. Тогда, что вы сделали правильно, но, как сказал Xaver Kapeller, он определенно разрядит аккумулятор устройства. Поэтому предлагалось внедрить push-уведомление с сервера, когда есть обновленные данные, поэтому после получения push-уведомления вы можете получать данные с сервера и делать нужный –