onUpdate的appWidgetIds []中有哪些ID?

时间:2011-11-16 15:11:55

标签: android background android-appwidget identifier

在方法

的数组 appWidgetIds 中执行id
  

public void onUpdate(Context context,AppWidgetManager   appWidgetManager,int [] appWidgetIds){

都属于我的应用程序?

如果是这样,那么在我的机器人的必杀技中有一些appwidgets,因为如果我删除所有的appwidgets仍然会在数组中保留一些ID,这些ID在我的主屏幕上没有显示。 : - (

有没有办法删除所有小部件?

3 个答案:

答案 0 :(得分:2)

你的app小部件可以有多个小部件用于同一个应用程序,比如一个小部件显示位置,一个小部件显示股票,一个小部件显示等等等等, 在这种情况下,可以为每个小部件分配一个名为appWidgetID

的ID

答案 1 :(得分:1)

我解决了问题:我卸载了,然后重新安装了我的应用程序,之后所有 ghost小部件都消失了。

总之: appWidgetIds中的所有ID都是我应用的ID

答案 2 :(得分:1)

Weeelp,八年后我回到了Android开发领域(很惊讶地发现我已经对此问题发表了评论),现在我有了一个真正的答案。在最初发布此问题之后,似乎似乎才变得更加知名,但基本上:Android中存在一个错误,该错误几乎永远都没有得到解决。

所有这些幻象ID是您从某个时候开始创建的小部件的appWidgetId,但在小部件配置活动中被错误地取消了

developer documentation上,它包含以下代码示例,用于确认小部件的创建:

Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();

请仔细阅读其下方的提示:

  

提示:首次打开配置活动时,将活动结果以及EXTRA_APPWIDGET_ID设置为RESULT_CANCELED,如上面的第5步所示。这样,如果用户在结束之前退出活动,则将通知App Widget主机已取消配置,并且不会添加App Widget。

虽然Android接受setResult(RESULT_CANCEL);(并且许多教程都使用它,而且我相信即使是官方文档也曾经有这样的示例代码),但这是错误的。无需传递新的ID,它就作为那些神秘的幻象ID之一保留在系统中。

取消创建窗口小部件的正确方法是setResult(RESULT_CANCEL, resultValue);