2015-10-15 2 views
2

Я хочу, чтобы Alarmmanager выстрелил первый раз после 2 секунд, а затем каждые 10 сек.Alarmmanager срабатывает впервые, но не повторяется

Не срабатывает первый раз ровно через 2 секунды. Что-то между 5 и 10 секундами позже. И это совсем не повторяется.

Вот мой код:

Alarmmanager:

Intent intent = new Intent(this, BackgroundService.class); 
final PendingIntent pendingintent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0); 

final AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 2 * 1000, 10 * 1000, pendingintent); 

Manifest:

<receiver android:process=":remote" android:name=".BackgroundService"/> 

BackgroundService.java:

public class BackgroundService extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("BackgroundService", "BackgroundService onReceive"); 
    } 
} 
+1

Не пытайтесь использовать класс AlarmManager. – Owner

+0

что еще? и почему бы нет? – Michael

+0

Intent i = новое намерение (AlarmClock.ACTION_SET_ALARM); – Owner

ответ

3

Понял:

В среде IDE говорит: третье значение будет вынужден до 60000 (1 мин) для экономии заряда батареи. Но я так долго не ждал, поэтому казалось, что он даже не повторяет.

Snap is here

1
am.setRepeating(AlarmManager.RTC_WAKEUP, **cal_alarm.getTimeInMillis()**, 1000*60*5 , pendingIntent); 

Я думаю, вы используете System.currentTimeMillis(), из-за которого у вас возникла эта проблема. Попытайтесь получить время от своего кода, для которого вы установили Alarm. Третий параметр в приведенном выше коде - это время повторения. Вы можете установить его на 10 секунд.

+0

Я изменил его на: Календарь календаря = Calendar.getInstance(); calendar.add (Calendar.SECOND, 2); alarmManager.setRepeating (AlarmManager.RTC, calendar.getTimeInMillis(), 2000, pendingintent); ' Тот же результат – Michael

+0

Дата dat = new Date(); Календарь cal_alarm = Calendar.getInstance(); Календарь cal_now = Calendar.getInstance(); cal_now.setTime (dat); cal_alarm.setTime (dat); cal_alarm.set (Calendar.HOUR_OF_DAY, 10); cal_alarm.set (Calendar.MINUTE, 43); cal_alarm.set (Calendar.SECOND, 0); – Owner

+0

Я имел в виду ваше время, которое вы настраиваете для будильника, так как вы хотите установить будильник, скажем, утром, 5:30 A.M. Установите значение cal_alarm в это значение. – Owner

0

это heslp меня

if (android.os.Build.VERSION.SDK_INT >= 19) { 
       alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
      } else { 
       alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
      } 
Смежные вопросы