android– 没有调用AppWidgetProvider的onEnabled和onDisabled的解决方法

android– 没有调用AppWidgetProvider的onEnabled和onDisabled的解决方法,第1张

概述由于我使用AlarmManager来执行定期的小部件更新,我需要确保onEnabled&onDisabled将可靠地工作.但是,我意识到它们有时不会被触发.我不是唯一一个面临这个问题的人.AndroidappWidgetProvideronEnablednevercalledontablet>是否有任何官方错误提交提交给GoogleAndroid团队

由于我使用AlarmManager来执行定期的小部件更新,我需要确保onEnabled& onDisabled将可靠地工作.

但是,我意识到它们有时不会被触发.我不是唯一一个面临这个问题的人.

Android appWidgetProvider onEnabled never called on tablet

>是否有任何官方错误提交提交给Google AndroID团队?
>有没有解决方法,尤其是onDisabled?因为我不希望在删除最后一个小部件之后仍然可以重复触发AlarmManager.

AndroIDManifest.xml中

    <receiver androID:name="org.yccheok.Myappwidgetprovider"        androID:exported="true" >        <intent-filter >            <action androID:name="androID.appWidget.action.APPWidget_UPDATE" />            <action androID:name="androID.appWidget.action.APPWidget_ENABLED" />            <action androID:name="androID.appWidget.action.APPWidget_DELETED" />            <action androID:name="androID.appWidget.action.APPWidget_Disabled" />        </intent-filter>        <Meta-data            androID:name="androID.appWidget.provIDer"            androID:resource="@xml/Widget_info" />    </receiver>
public class Myappwidgetprovider extends appwidgetprovider {    private static PendingIntent createalarmUpdatePendingIntent(Context context) {        Intent intent = new Intent(context, Jstockappwidgetprovider.class);        intent.setAction(Jstockappwidgetprovider.ALARM_UPDATE_ACTION);        PendingIntent pendingIntent = PendingIntent.getbroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);        return pendingIntent;    }    @OverrIDe    public voID onEnabled(Context context)    {                super.onEnabled(context);        PendingIntent pendingIntent = createalarmUpdatePendingIntent(context);        AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);        int scanSpeed = JstockApplication.instance().getJstockOptions().getScanSpeed();        alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + scanSpeed, scanSpeed, pendingIntent);    }    @OverrIDe    public voID onDisabled(Context context)    {        super.onDisabled(context);        PendingIntent pendingIntent = createalarmUpdatePendingIntent(context);        AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);        alarmManager.cancel(pendingIntent);    }

解决方法:

您可以在方法中检查当前正在运行的多个实例.

private boolean hasInstances(Context context) {    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);    int[] appWidgetIDs = appWidgetManager.getAppWidgetIDs(            new Componentname(context, this.getClass()));    return (appWidgetIDs.length > 0);}
总结

以上是内存溢出为你收集整理的android – 没有调用AppWidgetProvider的onEnabled和onDisabled的解决方法全部内容,希望文章能够帮你解决android – 没有调用AppWidgetProvider的onEnabled和onDisabled的解决方法所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存