android– 防止触发WidgetProvider的onUpdate

android– 防止触发WidgetProvider的onUpdate,第1张

概述我正在实现一个具有ConfigurationActivity的Widget,并且必须与Eclair(2.1)保持兼容.关于AppWidgetProviders onUpdate方法的documentation明确指出: ... .However, if you have declared a configuration Activity, this me

我正在实现一个具有ConfigurationActivity的Widget,并且必须与Eclair(2.1)保持兼容.

关于appwidgetproviders onUpdate方法的documentation明确指出:

… .However,if you have declared a configuration Activity,this method is not called when the user adds the App Widget,but is called for the subsequent updates. It is the responsibility of the configuration Activity to perform the first update when configuration is done. (See Creating an App Widget Configuration Activity below.)

不幸的是,这不是真的(至少对于带有JellyBean的Nexus S).事实上onUpdate在我的ConfigurationActivity触发器的onCreate之前被调用.我想知道,如果在其他手机上有类似的行为,并且是否可以阻止我的提供商内的onUpdate通话?

我的解决方法是使用特定的AppWidgetID在我的WidgetConfigurationActivity中的SharedPreferences中存储一个标志.如果它不存在,我可以假设没有首先调用ConfigurationActivity.这有效,但在我的观点中真的很难看.如果我无法阻止onUpdate触发,是否有更好的解决方案?

最佳答案是的,在主屏幕上添加小部件时会调用onUpdate().
看这里:

http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html

http://developer.android.com/reference/android/appwidget/AppWidgetManager.html#ACTION_APPWIDGET_UPDATE

我不确定在创建窗口小部件时是否有办法不触发它.但是,您可以通过将Widget Info XML文件中的“updatePeriodMillis”字段设置为0或将其留空来阻止它再次触发.

另一种方法是将窗口小部件ID存储在某处.现在,无论何时添加新窗口小部件,都要在Receiver类中检查ID是否已存在.如果它不存在(意味着一个新的小部件),那么不要执行任何代码.此外,每当删除窗口小部件时,都会从记录中删除窗口小部件ID由于您可能删除了窗口小部件,因此稍后添加了一个与旧窗口小部件具有相同ID的新窗口小部件.

希望有所帮助!

编辑:
在Receiver类的onReceive()方法中,执行以下 *** 作:

public voID onReceive(Context context,Intent intent) {    // Todo auto-generated method stub    int appWidgetID = intent.getIntExtra(AppWidgetManager.EXTRA_APPWidget_ID,AppWidgetManager.INVALID_APPWidget_ID);    if( appWidgetID != AppWidgetManager.INVALID_APPWidget_ID )    {        super.onReceive(context,intent);    }}

首次从“窗口小部件”列表中选择窗口小部件时,其appWidgetID将等于INVALID_APPWidget_ID,直到将其添加到主屏幕上.由于“super.onReceive()”在选择窗口小部件时调用onUpdate()方法,因此第一次不会调用onUpdate(). 总结

以上是内存溢出为你收集整理的android – 防止触发WidgetProvider的onUpdate全部内容,希望文章能够帮你解决android – 防止触发WidgetProvider的onUpdate所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存