私は今かなり大きくて複雑になっているアンドロイドアプリを持っており、間欠的なパフォーマンスの問題があるようです。私はそのアプリケーションを実行し、それはうまくいきます。別の時間は、ビューを切り替えるときに苦労します。パフォーマンスの問題の原因を検出しますか?
デバッグツールを使用してパフォーマンスの問題の原因を検出して修正する方法を教えてください。
私は今かなり大きくて複雑になっているアンドロイドアプリを持っており、間欠的なパフォーマンスの問題があるようです。私はそのアプリケーションを実行し、それはうまくいきます。別の時間は、ビューを切り替えるときに苦労します。パフォーマンスの問題の原因を検出しますか?
デバッグツールを使用してパフォーマンスの問題の原因を検出して修正する方法を教えてください。
SDKに付属のddms
ツールを使用してください。 アロケーショントラッカーという素晴らしい機能があり、コードが消費しているメモリの量とその原因となっている特定の行をリアルタイムで確認することができます。
ほとんどの場合、アダプタの実装が不良でレイアウトのインフラストラクチャが不十分であるか、キャッシュシステムを使用してBitmaps
(SoftReferenceの使用など)をデコードできないため、アプリの速度が低下します。 Traceviewが別の役に立つものです、クリスティアンが言及したツールに加えてTracking Memory Allocations
:
は、簡単な説明のために、この記事を見てみましょう。それはあまり詳しくは書かれていませんが、メソッドが呼び出される頻度、およびどのメソッドが多くの時間を費やしているかに関する情報を得ることができます。
もう一つの良いメモリトラッキングツールはここで、MATでは、Androidでそれを使用する方法について説明ページです:http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html
トレースとあなたがいないことを好む場合は、ヒープ・ダンプは、DDMSパネルを介して行うことができますどちらもコマンドラインで作業してください。 Eclipseのデバイスパネルで、使用しているデバイス/エミュレータの下で(パッケージ名で表示されている)あなたのアプリをクリックすると、メソッドプロファイリングを開始/停止してトレースを取得し、HPROFをダンプしてヒープダンプ。 MATプラグインを使用するには、ダンプを変換する必要があることに注意してください。上記のアンドロイドの攻撃メモリ問題は、それを行う方法を説明しています。
クリスティアンの答えを完了するにはJava/Androidでの割り当て=ガベージコレクタが起動しているために困惑します。本当に必要な場合を除き、新しいオブジェクトを作成しないようにしてください。 –
有用な新しい 'StrictMode'もあります。メインスレッドではあまり集中的に処理していないことを確認します。 http://developer.android.com/reference/android/os/StrictMode.html – smith324