android–AppWidget alarmmanager没有更新

android–AppWidget alarmmanager没有更新,第1张

概述所以,我有一个小部件,我希望它每60秒更新一次.当小部件首次添加到主屏幕时,它会正常运行其更新功能.除此之外,它应该启动一个AlarmManager,它将每60秒重新运行一次更新方法.这是它似乎没有真正做的部分.这是我的代码:publicclassClockWidgetextendsAppWidgetProvider{p

所以,我有一个小部件,我希望它每60秒更新一次.当小部件首次添加到主屏幕时,它会正常运行其更新功能.除此之外,它应该启动一个AlarmManager,它将每60秒重新运行一次更新方法.这是它似乎没有真正做的部分.这是我的代码:

public class ClockWidget extends appwidgetprovider {    public static String CLOCK_Widget_UPDATE = "com.nickavv.cleanWidget.CLEANCLOCK_UPDATE";    @OverrIDe    public voID onUpdate(Context context, AppWidgetManager appWidgetManager, int appWidgetIDs[]) {        final int N = appWidgetIDs.length;        for (int i = 0; i < N; i++) {            int appWidgetID = appWidgetIDs[i];            RemoteVIEws vIEws = new RemoteVIEws(context.getPackagename(), R.layout.clocklayout);            appWidgetManager.updateAppWidget(appWidgetID, vIEws);            updateAppWidget(context, appWidgetManager, appWidgetID);        }    }    public static voID updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetID) {        Log.d("log","Entered update cycle");        //Unimportant for these purposes        appWidgetManager.updateAppWidget(appWidgetID, vIEws);    }    private PendingIntent createClockTickIntent(Context context) {        Intent intent = new Intent(CLOCK_Widget_UPDATE);        PendingIntent pendingIntent = PendingIntent.getbroadcast(context, 0,                intent, PendingIntent.FLAG_UPDATE_CURRENT);        return pendingIntent;    }    @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));    }    @OverrIDe    public voID onDisabled(Context context) {        super.onDisabled(context);        Log.d("onDisabled", "Widget ProvIDer Disabled. Turning off timer");        AlarmManager alarmManager = (AlarmManager) context        .getSystemService(Context.ALARM_SERVICE);        alarmManager.cancel(createClockTickIntent(context));    }    @OverrIDe    public voID onReceive(Context context, Intent intent) {        super.onReceive(context, intent);        Log.d("onReceive", "Received intent " + intent);        if (CLOCK_Widget_UPDATE.equals(intent.getAction())) {            Log.d("onReceive", "Clock update");            // Get the Widget manager and IDs for this Widget provIDer, then            // call the shared            // clock update method.            Componentname thisAppWidget = new Componentname(context.getPackagename(), getClass().getname());            AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);            int IDs[] = appWidgetManager.getAppWidgetIDs(thisAppWidget);            for (int appWidgetID: IDs) {                updateAppWidget(context, appWidgetManager, appWidgetID);            }        }    }}

这是我在这个问题上发现的一些教程的产物,以及我自己对AndroID的了解.根据我的记录,它永远不会到达Log.d(“onReceive”,“Clock update”);线.是的,我的Manifest设置了时钟更新意图.谢谢!

编辑:其他信息.我在createClockTickIntent方法中放了一个日志行,然后它就会触发.所以我想这意味着我的应用程序正在运行alarmManager.setRepeating行,不知道为什么实际上并没有重复.

解决方法:

Arggghhh,这是一个简单的错字.意图过滤器是“com.nickavv.cleanWidgets.CLEANCLOCK_UPDATE”,我写了“com.nickavv.cleanWidget.CLEANCLOCK_UPDATE”

多么痛苦,但嘿,现在我知道了.

所以,对于任何对我有类似问题的人来说,故事的道德:检查你的拼写!检查两次,或十次.在一切!

总结

以上是内存溢出为你收集整理的android – AppWidget alarmmanager没有更新全部内容,希望文章能够帮你解决android – AppWidget alarmmanager没有更新所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1100357.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存