2017-03-06 156 views
0

我使用鬧鐘每15天啓動一次服務。報警在安裝的第一時間開始。每15天發生一次警報就會正確觸發該服務,但在發出警報時服務已啓動。我不想在安裝時啓動服務。如何阻止這一點。 我不知道我是否使用錯誤的格式?第一時間自動啓動鬧鐘設置鬧鐘

注意:除了這種情況,我不會在任何地方啓動服務。

Intent intent = new Intent(context, InitiateService.class); 
    PendingIntent pIntent = PendingIntent.getService(context, 12345, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 15 * AlarmManager.INTERVAL_DAY, pIntent); 

這是我在清單文件中。

<service android:name=".service.InitiateService" /> 

這是我發起警報在每一次15天啓動服務的代碼。

夥計如果有人在我的問題中發現任何錯誤,請道歉我和請糾正這些錯誤並回答我。

+0

發佈您的代碼以供進一步調查 – Noorul

+0

@Ahamed感謝您的回覆。我已經發布我的代碼。它是不夠的? – Palanivelraghul

回答

1

那是因爲你使用System.currentTimeMillis的()

試試這個

System.currentTimeMillis的()*(15 * AlarmManager.INTERVAL_DAY)

alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()*(15 * AlarmManager.INTERVAL_DAY), 15 * AlarmManager.INTERVAL_DAY, pIntent); 
+0

謝謝你的回覆,我會盡力讓你知道 – Palanivelraghul

+0

對不起老兄。它不工作。它再次立即啓動。 – Palanivelraghul

+0

好的,但它應該工作的問題是在那裏在System.currentTimeMillis(),因爲你正在觸發警報在當前時間 –

1

@Mehul Gajjar是正確的關於System.currentTimeMillis()

所以你可能想更換

System.currentTimeMillis() 

(15 * 24 * 60 * 60 * 1000 * System.currentTimeMillis()) 

說明:

System.currentTimeMillis()將設置報警到當前的時間,讓你的服務將啓動,立竿見影。在15天后設置鬧鐘將解決您的問題。 15 * 24 * 60 * 60 * 1000將等於15天。乘以當前的時間裏程將在15天后給你當前的時間。

在短代碼將會像

alarm.setRepeating(AlarmManager.RTC_WAKEUP, (15 * 24 * 60 * 60 * 1000 * System.currentTimeMillis()), 15 * AlarmManager.INTERVAL_DAY, pIntent); 

我希望這會幫助你。

+0

感謝您的答案哥們。我會再次檢查,並讓你知道。 – Palanivelraghul

+0

對不起老兄,還是第一次重新開始。 – Palanivelraghul

+0

你能告訴我你是如何初始化你的服務? –