В моем приложении мне нужно отправлять уведомления, когда они передаются как 1 неделя, или через 1 месяц после того, как пользователь сделал какое-то действие в приложении ... Он работает с BroadcastReceiver, как это >>Восстановить счетчик аварийных сообщений после перезагрузки
public void startMyReceiver() {
Long time = new GregorianCalendar().getTimeInMillis() + 1000 * 60 * 60 * 24 * 30; <-- for 1 month (it's getting numeric overflow, but is working)
Long interval = 2592000000L;
Intent intentAlarm = new Intent(this, MyReceiver.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, interval, PendingIntent.getBroadcast(this, 2, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));
}
Тогда простой класс приемник >>
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
sendNotification();
{
}
Тогда в AndroidManifest.xml >>
<application>
<receiver android:name="mypackage.MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
Я установил, что «android.intent.action.BOOT_COMPLETED» думает, что он собирается восстановить счетчик и продолжать отсчет до истечения времени ...
Но он сразу же начинает приемник, когда устройство BOOTED UP ...
Как я могу установить приемник на 1 месяц и после REBOOT он продолжает подсчитывать ??
- EDIT - НОВЫЙ ВОПРОС -
Как бы самый простой способ сохранить время и сделать расчет? Что-то вроде этого?? >>
1 - При первом срабатывании будильника я сохраняю текущее время в миллисекундах в Long FirstTime и определяю будильник на firstTime + longOneMonth;
2 - В приемник для загрузки, я получаю текущее время снова и сохранить его в Лонг rebootTime, то я:
Long timeDifference = rebootTime - firstTime;
Long differenceToMonth = longOneMonth - timeDifference;
И установите приемник снова время rebootTime + differenceToMonth ??
- EDIT 2 -
Может быть, если преобразовать первый параметр millisseconds на строки даты приемника и применить() его общие предпочтения, при перезагрузке, я мог бы преобразовать, что millisseconds снова .. . Я думаю, это сработает и будет проще
сохранять и извлекать его из sharedPreferences, файл или базу данных. Первое, наверное, самое легкое. – MikeT
, пожалуйста, добавили новый вопрос в главном –