2016-04-17 157 views
-3

雖然這個問題在這裏反覆重複,但是沒有解決方案正在工作,在下面的代碼中它應該在啓動我的活動10秒後第一次觸發,但它立即啓動。而且我正在使用FLAG_UPDATE_CURRENT,所以沒有過去的時間可以立即啓動,因爲我沒有按特定小時/分鐘/秒進行設置。請你把我的注意力集中到我失蹤的事情上。我的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,萬,(AlarmManager.INTERVAL_DAY/8),pi);

這是我在AndroidManifest.xml

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

認真的人誰加了-1的問題,爲什麼?你知道答案嗎?然後分享它,我解釋說我在這裏尋找答案,他們不工作,投票不是你玩的玩具,只是因爲你可以。 –

回答

7

上實時時鐘10000 check.class總是要在過去,所以你立即報警火災。您需要System.currentTimeMillis() + 10000作爲setRepeating()調用中的第二個參數。

我想指出的是setRepeating()與KitKat不一樣,所以報警觸發的實際時間可能會關閉。如果重要,請使用setExact()方法,每次觸發時再次將鬧鐘設置爲所需的時間間隔。

+2

謝謝Mike的解釋,尤其是第二部分/編輯,這是我認爲(在對同一問題應用其他解決方案期間)System.currentTimeMillis()將被添加到10000到第一個觸發器的原因。再次感謝你,是的,這不是確切的,但它會做檢查的目的。 –