2016-04-17 2 views
-3

Хотя этот вопрос повторяется снова и снова здесь, SO, но не решения работают, в приведенном ниже коде он должен запускаться впервые через 10 секунд после запуска моей активности, но это немедленно начать. И я использую FLAG_UPDATE_CURRENT, поэтому нет никакого времени для немедленного запуска, поскольку я не устанавливаю его в определенный час/минуту/сек. Не могли бы вы привлечь мое внимание к тому, что мне не хватает.My AlarmManager немедленно запускает тревогу

Я тестирую на Android 5.0 Ориентация API 4.0+

  • compileSdkVersion 23
  • minSdkVersion 16
  • targetSdkVersion 23

    Intent myIntent = new Intent(this, check.class); 
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    

    am.setRepeating (AlarmManager.RTC, 10000 , (AlarmManager.INTERVAL_DAY/8), pi);

И это мой check.class в AndroidManifest.xml

<receiver 
     android:name=".Check" 
     android:exported="false" /> 
+0

Серьезно люди, которые добавили -1 к вопросу, почему? Ты знаешь ответ? Затем поделитесь им, и я объяснил, что я искал ответы здесь, и они не работают, голосующий голос - это не игрушка, в которую вы играете, просто потому, что можете. –

ответ

7

10000 на часы реального времени всегда будет в прошлом, так что ваши тревоги срабатывает сразу. Вы хотите, чтобы System.currentTimeMillis() + 10000 был вторым аргументом в вызове setRepeating().

Я бы указал, что setRepeating() неточный, как на KitKat, поэтому фактическое время срабатывания сигнализации может быть отключено. Если это имеет значение, используйте вместо этого метод setExact(), снова устанавливая будильник для желаемого интервала каждый раз, когда он срабатывает.

+2

Благодарим Майка за объяснение, особенно за вторую часть/править. Именно по этой причине я подумал (при применении других решений по тому же вопросу), что System.currentTimeMillis() будет добавлен к 10000 для первого запуска. Еще раз спасибо, и да, это не точно, но это будет сделано для цели проверки. –

Смежные вопросы