gpt4 book ai didi

java - 在午夜 (12 AM) 更新小部件失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:00 25 4
gpt4 key购买 nike

我有一个带小部件的回历应用程序。 Hijri 日历的日期应使用 AlarmManager 在午夜更改。问题是,尽管使用 Alarm Manager 来安排午夜更新,但该小部件并没有在午夜 12 点准确更新。它会在凌晨 12 点到凌晨 1 点之间更新。

我哪里错了?

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);
}

list :

<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>

最佳答案

我认为您需要更改与 Calender 和 AlarmManager 相关的代码。

这个日历表示第二天午夜的确切时间。并且 AlarmManager 将在每天的那个时间触发 Intent 。

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
calendar.add(Calendar.DAY_OF_MONTH, 1);

AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, service);

注意:我认为您应该在onEnabled() 方法中添加上面的代码。 Here is a highlight of the AppWidgetProvider's related methods .

关于java - 在午夜 (12 AM) 更新小部件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com