同学们!我的问题是:我有一个带有配置 Activity 的应用程序小部件(最低 SDK - 2.1), 它工作正常,但有时它开始工作得更慢。我登录并发现之前 更新我的 App Widget 方法 onUpdate 收到一组 App Widget ID
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Log.d("onUpdate", Arrays.toString(appWidgetIds));
但事实是我在主屏幕上只有两个 App Widget 实例,但数组的长度 多则2(二):4,有时5、6。怎么会这样呢?我的 AppWidget 更新缓慢的原因 是我必须为所有 id 调用 onUpdate-method 但有些 id(正如有人所说的“幻影小部件”)不是 真实正确。
也许有人遇到过这样的问题,会帮我弄清楚如何处理真正的 应用小部件 ID。
附言卸载然后重新安装应用程序小部件(之后所有的幽灵小部件都消失了) - 不是 正确解决我的问题。我想以编程方式控制 ghost 和 real 小部件。
有人知道如何修复这个错误吗?
最佳答案
此代码将删除小部件(所有小部件,甚至是屏幕上的小部件),因此不是理想的解决方案
ComponentName cn = new ComponentName(getApplicationContext(), YourWidget.class);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
int[] appWidgetIds1 = appWidgetManager.getAppWidgetIds(cn);
AppWidgetHost host = new AppWidgetHost(getApplicationContext(), 0);
for (int appWidgetId : appWidgetIds1) {
host.deleteAppWidgetId(appWidgetId);
}
在 4.2 上删除锁屏小部件时仍然存在问题(从未调用过 onReceive)
关于android - appwidget appWidgetIds 的问题(小部件的真实实例和虚拟实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13471067/