1

Android用のアプリを開発したばかりです。これはゲームですが、3Dグラフィックスを使用していません。これは、ImageViewを画面上で動かすボードゲームです。それ以来、私はまだモバイルデバイスでテストしていません。エミュレーターだけでテストしています。問題は、Samsung Galaxy S2電話でアプリを実行すると(デュアル鉱石:()、CPU使用率が最大85%になり、プロセスを強制終了すると:Dが熱くなることです(アプリを完全に閉じるので、バックグラウンドでは実行されません)0になります:)

問題の修正をどこから始めればよいのかさえわかりません。アイデアを教えてもらえますか?

私はこれが起こるかもしれない2つの理由だけを考えることができます、しかしそれらは愚かな理由かもしれません:

  • UIスレッドを除いて、さらに2つのスレッドがあり、それぞれに無限のwhileループがあり、無限に循環し、各スレッドのメッセージキューにメッセージがあるかどうかを確認します。これは本当でしょうか?これらのループに数ミリ秒の遅延を入れて、それほど速く実行されないようにする必要がありますか?
  • また、タッチで移動している画面で約20〜25のimageViewを使用しています。それらはこれと何か関係がありますか?

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

誰かが私がこの問題にどのように取り組むべきかについていくつかのアドバイスを提供することができれば、私は感謝するでしょう。

4

1 に答える 1

4

「さらに2つのスレッドがあり、それぞれに無限のwhileループがあり、これは無期限に循環し、各スレッドのメッセージキューにメッセージがあるかどうかを確認します。」

上記のことは私には疑わしいように聞こえます。独自のスレッドで無限ループを使用する代わりに、この目的のために正確に設計されたハンドラーを実際に使用する必要があります。

開発者のサイトから:

ハンドラーを使用すると、スレッドのMessageQueueに関連付けられたMessageオブジェクトとRunnableオブジェクトを送信および処理できます。各Handlerインスタンスは、単一のスレッドとそのスレッドのメッセージキューに関連付けられています。

ハンドラーの主な用途は2つあります。

  1. 将来のある時点で実行されるメッセージとランナブルをスケジュールする
  2. 自分のスレッドとは異なるスレッドで実行されるアクションをキューに入れる

さらに、 Eclipseの[ DDMS ]タブには、CPUの過剰使用を調査するために必要なすべてのツールが用意されています。

于 2012-04-27T09:43:41.923 に答える