我有一个可以减少时间的小部件。 它位于主屏幕上,当我停留在主屏幕上时似乎工作正常, 但是当我切换到另一个屏幕一段时间然后回到HOME时,小部件开始滞后。
当我在其他屏幕上时似乎没有做更新,因为时间没有更新,现在它正在执行所有更新,一起计算倒计时时间。这导致滞后和短暂的手机冻结(这在我每分钟呼叫更新时)。如果我想每秒更新一次 - 手机在屏幕锁定时间约20分钟或其他失焦动作后完全冻结。
问题:我是否可以隐式告诉小部件继续更新,无论它是否显示在屏幕上?或者如何解决这个问题?
答案 0 :(得分:0)
View.OnFocusChangeListener
我猜你可以用它来监控你的小部件是否对焦。在谷歌文档上查看它。我还没有自己使用它,所以我不确定它会起作用,但绝对值得一试。
http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html
答案 1 :(得分:0)
这是一个糟糕的整体设计 - 如果你必须计算每个“滴答”并在那个时候发生,服务可能是做这项工作的最好的事情,只是让小部件询问服务它应该显示什么。
但是......你会把电池弄糟。它是否真的需要在每个刻度上做一些事情,或者你可以只存储最后的绘制时间,找到当前时间然后相应地更新,跳过中间的所有刻度?
如果在达到零时需要发生某些事情,请尝试使用android报警系统。你的用户电池续航时间会更好,CPU会以不同的方式运行它。
答案 2 :(得分:0)
我不确定你是否这样做,但你必须使用AlarmManager类来更新你的小部件。不要使用可能导致延迟的任何线程或东西。 我用它,它对我有用。 See this