developer's site表示在updatePeriodMillis时间之后调用onUpdate
方法。但是当我在方法onUpdate
中编写时,例如Log.e ("tag", "update");
,只有在运行小部件时才会在日志中写入。
为什么?
答案 0 :(得分:0)
onUpdate()
更像是“立即恢复此小部件”处理程序。它应该(重新)初始化/启动小部件的资源和服务。系统绝对不会尊重非常低android:updatePeriodMillis
的值,因此使用onUpdate()
作为主窗口的小部件将无效!
您想要做的是:
在onUpdate()
中:使用AlarmManager
创建一个具有自定义操作的新PendingIntent
。将AlarmManager
设置为您需要的最快重复次数。
在onReceive()
中:选择自定义操作,然后拨打Log.e()
或任意内容。
注意:创建自定义操作后,请不要忘记将其添加到Manifest.xml中的<Intent-Filter>
。否则,onReceive()
将无法接收它。
有点过时但仍有部分相关:http://kmansoft.com/2010/04/10/processing-widget-events-with-pendingintents/