7

私は数か月間 Android アプリを作成しています。まだリリースされていませんが、私のデバイスにインストールされています。

昨日から使用していなかったにもかかわらず、今日、Battery Doctor アプリからアプリが大量の CPU を消費しているという通知を受け取りました。

したがって、基本的に私のアプリはバックグラウンドで実行されており、何もしていないはずですが、CPU を使用しています。

そこで、TraceView を開いて、アプリがバックグラウンドにある間にプロファイリングを行いました (このプロファイリング時間中、アプリとはまったくやり取りしませんでした) 。 PYg6twX.png

私はここで非常に無知です。実際のコードからは関数がまったく見えないので、どこから調べればよいかさえわかりません。そして、スクリーンショットのこれらの機能が何をしているのか、なぜそこに表示されているのか、私にはよくわかりません。

そのため、いくつかの質問がありました。助けていただければ幸いです。

  • プロファイリングの結果は期待どおりで、OK ですか? または、アプリと対話していない場合、これらの機能は表示されないはずですか?
  • これらの機能が表示されない場合、私のアプリで何が問題なのか誰か推測できますか? admobが原因でしょうか?

どうもありがとう!

4

1 に答える 1

0

同じ問題があります

CPU プロファイルを参照してください。私のアプリはバックグラウンドで動作していましたが、CPU の消費は常に 1 ~ 5% であり、このまま長時間実行し続けるとバッテリーの消耗が発生します。

ここに画像の説明を入力

アドモブ?

@CommonsWare の提案として、admob の依存関係を削除して再度実行します。CPU の使用率はほぼ 0% まで下がります。新しいプロファイルを参照してください: https://i.stack.imgur.com/bMBuL.png (admob SDK バージョン: 17.1.2)

しかし、それは解決策ではありません。サンプルアプリを確認しましたが、バックグラウンドで CPU を消費していません。

それを私が直した

バナー広告を使用している場合は、少なくともホスト アクティビティの対応するイベントで呼び出すAdView#pause必要があります。AdView#destroyそうしないと、広告ビューが「アクティブ ビュー」をチェックし続けるため、CPU 消費が発生します。

于 2019-01-02T18:02:27.873 に答える