2

Android の時計ウィジェットを作成しました。ウィジェットには gif アニメーションが含まれています。

私のウィジェットには、ビューを維持する独自のサービスがあります。アニメーションを再生するスレッド。

理由は不明ですが、ウィジェットが起動した後のある時点で、ビューがフリーズしたかのようにアニメーションの再生が停止します。最初は、基盤となるサービスが壊れているか、スレッドの 1 つがデッドロック状態にあると思いました。

私が見つけたのは、すべてが完全に実行され、ビューだけが変更されないということでした.

これが通常のアプリケーション ビューである場合、ビューで invalidate() を呼び出す必要があると考えたでしょうが、RemoteViews にはそのような呼び出しがありません。

誰でも同様の問題を経験していますか?

4

1 に答える 1

-1

非 UI スレッドから invalidate() を呼び出す可能性があると思います。メソッド invalidate() は、UI スレッドでのみ呼び出す必要があります。その場合は、invalidate() ではなく postInvalidate() を使用してください。

詳細については、次のドキュメントを参照してください。

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

于 2013-11-09T17:05:57.860 に答える