
由于我使用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的解决方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)