Сигнал не работает в Android, когда устройство выключено и снова - PullRequest
4 голосов
/ 11 апреля 2011

Я установил будильник, чтобы он напомнил мне, что он работает, когда устройство включено.Но когда я выключаю устройство и снова включаю напоминание, будильник не работает.Ребята, подскажите, пожалуйста, как можно решить эту проблему?

Мой код выглядит так:

Intent myIntent = new Intent(getApplicationContext(), serviceclass.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
    CONST+id, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Calendar calender = Calendar.getInstance();
calender.setTimeInMillis(System.currentTimeMillis());
calender.set(Calendar.HOUR_OF_DAY, hours);
calender.set(Calendar.MINUTE, ireminder.getMin());
calender.set(Calendar.SECOND, 0);
calender.set(Calendar.MILLISECOND, 0);  
calender.set(Calendar.DAY_OF_WEEK, day);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,  

calender.getTimeInMillis(), 7 * AlarmManager.INTERVAL_DAY, pendingIntent);                

Ответы [ 2 ]

4 голосов
/ 09 мая 2011

Тревоги будут сброшены при перезагрузке.

Что вы можете сделать, это

  1. сохранить информацию о тревоге в таблице базы данных
  2. зарегистрировать для REBOOT_COMPLETED -Событие
  3. При перезагрузке запустите фоновый поток, чтобы повторно зарегистрировать сигнал тревоги.Убедитесь, что вы правильно рассчитали время срабатывания будильника.

См. API: «Зарегистрированные будильники сохраняются, пока устройство находится в спящем режиме (и при желании могут разбудить устройство, если оно выключилось в течение этого времени), нобудет очищен, если он выключен и перезагружен. "- http://developer.android.com/reference/android/app/AlarmManager.html

1 голос
/ 24 июня 2015

Создать класс OnBootReceiver

public class OnBootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        mgr.setRepeating(AlarmManager.RTC_WAKEUP,
        SystemClock.currentThreadTimeMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES,
                    pi); 

    }

}

внутри манифеста

<receiver android:name=".OnBootReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

внутри вашей деятельности

sendBroadcast(new Intent(this, OnBootReceiver.class));
...