2017-03-06 114 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

你能告诉我你是如何初始化你的服务? –