1

ときどき (そして明確な再現手順がなくても) デバイスは画面が完全に動かなくなる状態になります。「つかむ」とは、絶対に何も描画しないことを意味します。動作は、メイン スレッドでブロッキング呼び出しがあったかのようですが、デバッガー上で動作をキャッチでき、これが問題ではないことを確認できました (言うまでもなく、ANR から ANR を受け取っていません)。アンドロイド)。

混乱をさらに悪化させたのは、画面を操作したときにログ ステートメントを介してアプリが正常に動作していることに気付きました。そのため、スクロール ジェスチャを行うと、ビューが膨張し、適切なネットワーク呼び出しが行われていることがわかります。画面に何も描画されていないことを除けば、アプリは完全に機能しています。

Eclipse で UI XML スナップショット ツールを使用すると、画面に表示されるはずのビューが表示されることさえあります (ただし、描画された画像はまだ凍結された「スクリーンショット」です)。

私たちは最近アニメーションを導入しました。具体的には、nineoldandroids プロジェクトを使用して一部の機能をバックポートしています。この問題はすべての電話 (私の 4.2.2 Galaxy Nexus を含む) で発生するようですが、やはり再現は困難です。

この動作を説明するのは完全に途方に暮れています。この問題の原因および/または修正方法についての洞察をいただければ幸いです。

編集:今日多くのテストを行った結果、 draw(...) がどのビューでも呼び出されていないようです。これは、画面が「フリーズ」している理由を説明します。Measureが呼び出されます (これにより、UI XML スナップショットが画面に表示されるもの正しく表示する理由が説明されます)。

4

1 に答える 1

2

うまくいけば、これが将来誰かに役立つことを願っています.

正確な方法はまだわかりませんが、アプリは onPreDraw リスナーが登録されているが登録解除されていない状態になる可能性があります。さらに、そのonPreDraw リスナー内に false を返す状態がありました。そのため、Android がすべての onPreDraw リスナーを調べて描画できることを確認すると、参照がなくなったこのリスナーは常に false を返していました。その状態を解消することで、私たちの問題は解決したようです。

于 2013-03-28T13:58:00.870 に答える