我有一个带小部件的伊斯兰历应用程序。伊斯兰历的日期应该在午夜使用AlarmManager更改。问题是,尽管使用Alarm Manager来安排午夜更新,但小部件并不会准确地在午夜12点更新。它将在午夜12点到1点之间的某个时间更新。
我错在哪里了?
Java:
我错在哪里了?
Java:
private static PendingIntent service = null;
private static long UPDATES_CHECK_INTERVAL = 24 * 60 * 60 * 1000;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
schedule(context);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
protected void schedule(Context context) {
final AlarmManager m = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final Calendar TIME = Calendar.getInstance();
Date now = new Date();
TIME.add(Calendar.DAY_OF_MONTH, 1);
TIME.set(Calendar.HOUR_OF_DAY, 0);
TIME.set(Calendar.MINUTE, 0);
TIME.set(Calendar.SECOND, 0);
TIME.set(Calendar.MILLISECOND, 0);
long firstTime = (TIME.getTimeInMillis()-now.getTime());
final Intent i = new Intent(context, UpdateService.class);
if (service == null)
{
service = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
}
m.setRepeating(AlarmManager.RTC, firstTime, UPDATES_CHECK_INTERVAL, service);
}
清单文件:
<receiver android:name="com.example.app.Widget" android:label="Calendar" android:exported="false">
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.DATE_CHANGED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
TIME.getTimeInMillis()-now.getTime()
中进行减法运算? - iTurki