2012-04-27 12 views
1

私はAndroid用のアプリを開発したばかりですが、ゲームですが3Dグラフィックは使用していません。それは私がスクリーン上でImageViewsを動かすボードゲームです。以来、私はモバイルデバイス上でまだエミュレータ上でテストしていません。問題は、サムスンギャラクシーS2の携帯電話(デュアル鉱石:()で私のアプリケーションを実行すると、CPU使用率が85%に上がり、気の利いた電話が熱くなる:D私はプロセスを終了するときそれはバックグラウンドで実行されません)0に下がります。Android。 CPU使用量が多すぎる

私は問題の修正を開始する場所がわかりません。あなたは私にアイデアを教えてもらえますか?

私はこれが起こる可能性があるため、二つの理由を考えることができますが、彼らは愚かな理由であるかもしれない:

  • UIスレッドの例外を除いて、私は、それぞれがループしながら、無限を持つ、2つの以上のスレッドを持っています各スレッドのメッセージキューにメッセージがあるかどうかを調べます。これが事実だろうか?私はこれらのループに数ミリ秒の遅れを入れなければならないので、速く走らないのですか?
  • また、私は約20-25のimageViewsを画面上で使用しています。これはタッチで移動しています。彼らはこれと何か関係がありますか?

エミュレータからメモリリークや何かを確認する方法はありますか?

誰かがこの問題にどのように取り組むべきかについてアドバイスをいただければ幸いです。

+1

良いスタートはMemoryAnalyzer:http://www.eclipse.org/mat/ – noli

答えて

4

「私は2つのより多くのスレッドを持って、それぞれが無限を持つループれ サイクル不定、各スレッドのメッセージ キュー内にメッセージがある場合に見えながら、」

以上のことは疑わしい聞こえます私に。独自のスレッドで無限ループを使用する代わりに、実際にこの目的のために設計されたHandlerを使用する必要があります。開発者のサイトからも

Aハンドラは、あなたが送信することができますし、スレッドのメッセージキューに関連するプロセスメッセージとのRunnableオブジェクト 。各ハンドラインスタンスは、単一スレッドとそのスレッドのメッセージキューに関連付けられた です。

ハンドラのための2つの主な用途があります。

  1. あなたよりも別のスレッドで実行されるアクションをキューに入れるために、将来に にいくつかのポイントとして実行する
  2. をメッセージとランナブルをスケジュールするには 自身

に加え、EclipseのDDMSタブでは、あなたに必要なすべてを与えるだろうツールを使用してCPUの過剰使用を調査します。

関連する問題