java – 午夜(12 AM)更新小部件失败
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 午夜(12 AM)更新小部件失败,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2439字,纯文字阅读大概需要4分钟。
内容图文
![java – 午夜(12 AM)更新小部件失败](/upload/InfoBanner/zyjiaocheng/792/4f81b223bf23412db9e0eec34fa21210.jpg)
我有一个带小部件的Hijri日历应用程序. 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);
}
表现:
<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将在每天的那个时间触发意图.
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)更新小部件失败全部内容,希望文章能够帮你解决java – 午夜(12 AM)更新小部件失败所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。