据我所知,有两种类型的调用AppWidgetProvider的onUpdate()方法:
在onUpdate()方法中,我想在第一种情况下启动某些服务,但不会在第二种情况下启动。是否可以确定如何调用onUpdate()?
答案 0 :(得分:0)
我认为在更新广播中没有提供给您的简单标志,表明这两种情况。
请记住,每个ACTION_APPWIDGET_UPDATE
广播(因此每个onUpdate()调用)都包含appwidget ID的全部或部分内容,以便进行更新。这些ID在窗口小部件的生命周期中是不变的,每个ID都有相同的ID,直到它被删除。
这意味着您可以存储您的ID并在每次获得onUpdate()调用时进行比较。如果你在提供的数组中点击了一个不在保存记录中的ID的onUpdate(),你可以确定这是一个新的widget实例更新。否则它是一个或多个旧的。
为了使您的记录保持整洁,您还必须在提供商中实施onDeleted()
。从记录中删除已删除的ID。否则,当用户删除窗口小部件并添加新实例时,您可能遇到问题,它可能会获得相同的ID。