【发布时间】:2015-06-03 10:30:06
【问题描述】:
我制作了一个数字时钟小部件,它使用AlarmManager 每 60 秒更新一次时间。
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
Log.d("onEnabled","Widget Provider enabled. Starting timer to update widget every minute");
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 60000, createClockTickIntent(context));
}
问题是,每 60 秒轮询一次系统时间不会使我的小部件时间与系统时间同步。假设用户在 6:00:20 添加小部件,我的小部件显示时间 6:00 并休眠 60 秒,因此当系统时间变为 6:01:00 时,我的小部件还需要 20 秒才能赶上。
有没有办法做到以下几点?
第 1 步:获取系统时间并在小部件上显示。
第二步:设置第一次更新间隔=(60 - 当前秒值)。
第 3 步:第一次更新后,将后续更新间隔设置为 60 秒。
【问题讨论】:
标签: android android-intent android-widget android-manifest android-broadcast