首先,这个网站很棒,每个人都很乐于助人。这是我的第一篇文章,如果我遗漏了什么,请原谅我。
我像这样创建一个警报:
private void startLocation() {
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyWeatherUpdateService.class);
PendingIntent service = PendingIntent.getService(context, 0, i,
PendingIntent.FLAG_CANCEL_CURRENT);
alarm.setRepeating(AlarmManager.RTC, SystemClock.elapsedRealtime() + (60 * 1000),
Long.parseLong(prefs.getString("listpref", "60000")), service);
}
在片段内部调用的这个方法中,上下文来自getApplication(),listpref是一个字符串更新间隔,以毫秒为单位。
我通过以下方式取消它:
public void endLocation() {
Intent i = new Intent(context, MyWeatherUpdateService.class);
PendingIntent service = PendingIntent.getService(context, 0, i,
PendingIntent.FLAG_CANCEL_CURRENT);
alarm.cancel(service);
}
确保意图/待定意图是相同的。
现在我有两个问题:
1)警报几乎在创建后立即触发,即使我告诉它在 1 分钟后开始。2)当我调用取消时,警报会在取消警报之前再次触发。
问题1)为什么警报会这么快响起?并且使用 2) 这是按预期工作还是应该像我想要的那样立即取消警报。
如果我没有提供足够的信息,如果需要,我会添加更多代码。
提前致谢。