android - appwidget appWidgetIds 的问题(小部件的真实实例和虚拟实例)

标签 android android-widget instance android-appwidget

同学们!我的问题是:我有一个带有配置 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/

相关文章:

android - 如何更改 SectionIndexer 中弹出窗口的颜色?

java - 实现只有一个实例的类

android - Firebase 云函数陷入死循环

java - Android Studio : android. jar 缺少一些类

android - 在声音设置android中禁用音量选项

node.js - 如何从 child_process stdout 检索对象?

java - 类方法与实例方法

android - Altbeacon Android 库 - didRangeBeaconsInRegion

java - 如何以编程方式更改主屏幕小部件的形状颜色

android - 在我的情况下,如何以编程方式在另一个布局之上显示一个布局?