我写了一个 Android 时钟小部件。该小部件包括 gif 动画。
我的小部件有自己的服务来维护其视图。和播放动画的线程。
由于不清楚的原因,在小部件启动后的某个时间点,它停止播放动画,就好像视图冻结一样。起初我以为底层服务坏了,或者其中一个线程处于死锁状态。
我发现一切运行完美,只有视图没有改变。
如果这是一个普通的应用程序视图,我会认为我应该在视图上调用 invalidate() - 但 RemoteViews 没有这样的调用。
任何人都有类似问题的经验?
我写了一个 Android 时钟小部件。该小部件包括 gif 动画。
我的小部件有自己的服务来维护其视图。和播放动画的线程。
由于不清楚的原因,在小部件启动后的某个时间点,它停止播放动画,就好像视图冻结一样。起初我以为底层服务坏了,或者其中一个线程处于死锁状态。
我发现一切运行完美,只有视图没有改变。
如果这是一个普通的应用程序视图,我会认为我应该在视图上调用 invalidate() - 但 RemoteViews 没有这样的调用。
任何人都有类似问题的经验?
我认为您可能会从非 UI 线程调用 invalidate() 。方法 invalidate() 只需要在 UI 线程中调用。如果是这种情况,请使用 postInvalidate() 而不是 invalidate()。
有关更多信息,请参阅以下文档,
http://developer.android.com/reference/android/view/View.html#postInvalidate%28%29