是否可以确定如何调用AppWidgetProvider的onUpdate()方法?

时间:2012-02-21 10:23:02

标签: android android-appwidget onupdate

据我所知,有两种类型的调用AppWidgetProvider的onUpdate()方法:

  1. 当updatePeriodMillis圈已过期时
  2. 将新小部件添加到主屏幕
  3. 在onUpdate()方法中,我想在第一种情况下启动某些服务,但不会在第二种情况下启动。是否可以确定如何调用onUpdate()?

1 个答案:

答案 0 :(得分:0)

我认为在更新广播中没有提供给您的简单标志,表明这两种情况。

请记住,每个ACTION_APPWIDGET_UPDATE广播(因此每个onUpdate()调用)都包含appwidget ID的全部或部分内容,以便进行更新。这些ID在窗口小部件的生命周期中是不变的,每个ID都有相同的ID,直到它被删除。

这意味着您可以存储您的ID并在每次获得onUpdate()调用时进行比较。如果你在提供的数组中点击了一个不在保存记录中的ID的onUpdate(),你可以确定这是一个新的widget实例更新。否则它是一个或多个旧的。

为了使您的记录保持整洁,您还必须在提供商中实施onDeleted()。从记录中删除已删除的ID。否则,当用户删除窗口小部件并添加新实例时,您可能遇到问题,它可能会获得相同的ID。