Android アプリのある機能の実行が遅く、
「***」は応答していません
が表示されていた。
入力イベントに対する応答が 5 秒以内にないと、この ANR ダイアログが表示されると説明されている。
それで、Android Studio のプロファイルを使ってみた。
次の手順で、各 Method の実行時間を計測できる。
1. ツールバーの [Profile] をクリック
2. + をクリックし、デバイス等を選択
3. [CPU] タイムラインの任意の場所をクリックして CPU Profiler を開く。
4. 記録構成の Java/Kotlin Method Sample (legacy) を選択(図1)
5, Record をクリックし開始(図1)。Stop をクリックし停止。
最初、CPU Profiler を開く部分がわかり難かった。
次の図は、実行結果の例だが、onPostExecute() 内の load() 内で実行している replaceAll() が非常に遅く、78% の時間がかかっていることがわかった。
これを書き換えたところ、load() の実行時間は、6754 ms から 537 ms になり、1/10 以下に高速化できた。
別の部分でも、遅い部分がわかり、書き換えたところ、 6890 ms から 1185 ms に高速化できた。