在许多教程中,建议更新小部件如下;
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
int widgetId = appWidgetIds[i];
Log.d(TAG, " ## onUpdate ## , appWidgetIds.length = "+ String.valueOf(appWidgetIds.length) + " appWidgetId = " + widgetId );
context.startService(new Intent(context, UpdateService.class));
}
}
但是,虽然我的主屏幕上只有一个小部件,但appWidgetIds的大小会返回52,并且每个小部件都会尝试处理更新。当然,这会导致被叫服务过载,最终导致应用程序崩溃。
在他的post中,Kostya Vasilyev为这个错误提供了一种解决方法。
这应该是一个非常常见的问题,但我无法找到此解决方案的任何替代方案。我们如何识别陈旧的小部件并避免尝试更新它们?
提前致谢。
编辑:我刚认为避免陈旧小部件的一个好方法是停止正在运行的服务(如果有的话),在完成代码后:)它似乎有救了我的一天,当然不是答案。