私のアプリは、フレームごとに実際には単純なビュー(回転、平行移動)のプロパティを変更します。私はフレームを落としていたかどうかを確認するために、Androidのパフォーマンス記事でアドバイスされたsystraceを使用しました。デバイスが静止しているがタッチされたときのAndroidアニメーションのパフォーマンス低下
何か本当に予期せぬことが起こりました。デバイスが静止していても(たとえ画面に触れたとしても)CPU使用率が高くなり、systraceのアラートが表示され、GPUレンダリングプロファイラの赤い部分が長くなりました。私が回転したり、本当に高速に装置を振ると、すべてがOKでした。
以下は結果のリンクです。 Shake
は、デバイスを本当に速く回転させたときのことです。no_shake
は机の上に置かれたままです。
私は、単一の翻訳アニメーション:source codeを使用する非常に単純なテストアプリケーションを作った。
は、フレームレートが滑らかであるシェイクSYSTRACE、を見るとなぜHW_VSYNC_0とHW_VSYNC_ON_0ラインデータがありませんか?どのようにしてCPU周波数を読み取ることができますか(私はトレースをキャプチャするときにオプションを有効にしました)。
私の理論は、デバイスがCPUの周波数を下げる可能性があるということでした。どのように私はsystraceでこれを読むことができますか?私はこの仮説をテストするために第三者のアプリを使用しました。それは以下のように真です。では、この問題を避けるために私は何ができますか?
なぜデバイスはこれをしているのですか?最初は、デバイスが加速度計のデータを使用して、使用されていないかどうかを理解し、CPUの周波数を下げたと考えました。しかし、CPUの周波数を上げるためには、デバイスを本当に揺さぶらなければなりません。通常の人のようにそれを保持することは、CPUの周波数を増加させません。
私はそれがたくさんの質問であることを知っていますが、Androidのグラフィックスパイプラインに関するすべての関連記事を読んで、私はアイデアがありません。
問題は5.1 Androidの問題を実行しているソニーのXperia Z3に発生したアンドロイド6.
を実行しているNexus 5の上で再現可能ではなかったアップデート
それは/パフォーマンスの問題は、CPUによって引き起こされているようですGPUスロットリング。同じデバイス、Xperia Z3は、Android 4.4を使用している場合、クロック速度を低下させても、Systraceによればより優れたパフォーマンスを示します。また、振るとスピードが上がらない。
CPUスピードを上げるために必要な振る舞いについては、デバイスを縦長から横向きに、またはその逆に回転しようとすると、CPUクロックがトリガされることに気付きました(アプリが向きを変えなくても)。だから、私はこのジェスチャーが監視されている理由は、可能性のあるオリエンテーション変更をスピードアップすることだと思う。
[Snapdragon 810 s * ck badly ...そのためです:)](http://arstechnica.com/gadgets/2015/ 04 /詳細なスナップドラゴン-810s-熱問題/) – Selvin
Nexus 5 Snapdragon 800にはこの問題はありません。私は、この問題がAndroidのバージョン、OEMなどと関係しているかどうかわかりません。 – Petrakeas
多分現在は(6またはそれより新しいカーネルで)修正されています...私はまだ "big"と "small" "刃物のコア – Selvin