【问题标题】:My Android Widget stop refreshing the view我的 Android Widget 停止刷新视图
【发布时间】:2013-11-09 16:03:22
【问题描述】:

我编写了一个 Android 时钟小部件。 该小部件包括 gif 动画。

我的小部件有自己的服务来维护它的视图。以及播放动画的线程。

由于不清楚的原因,在小部件启动后的某个时间点,它会停止播放动画,就好像视图冻结一样。一开始我以为底层服务坏了,或者某个线程死锁了。

我发现一切运行完美,只有视图没有改变。

如果这是一个普通的应用程序视图,我会认为我应该在视图上调用 invalidate() - 但 RemoteViews 没有这样的调用。

有人遇到过类似问题吗?

【问题讨论】:

    标签: android animation view android-widget invalidation


    【解决方案1】:

    我认为您可能会从非 UI 线程调用 invalidate()。方法 invalidate() 只需要在 UI 线程中调用。如果是这种情况,请使用 postInvalidate() 而不是 invalidate()。

    有关更多信息,请参阅以下文档,

    http://developer.android.com/reference/android/view/View.html#postInvalidate%28%29

    【讨论】:

    • postInvalidate() 您只能发送到窗口内的视图(据我所知)。无法通过这种方式访问​​小部件视图,只能通过 RemoteView。还是我错过了什么?
    • 好的。对于远程视图,我们需要使用广播接收器。广播您需要的值并通过 onReceive() 方法接收值,然后在 onReceive() 本身中调用 onUpdate()。我认为这会很好.. 请参考
    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多