これはAndroid Advent Calendar 2014の30日目の記事です。 はじめに 25日目では目に見えないボトルネックを探す手法を紹介しましたが、今回はAndroidアプリ開発を行う上で避けては通れないANRとその対処法について書きます。 環境 この記事で紹介するソースコードの動作確認は以下の環境で行いました。 Mac OS X 10.9.5 Android Studio 1.0.2 Genymotion 2.3.1 Galaxy S2 (4.1.1) on Genymotion ANR ANRとはメインスレッド上で重たい処理を行った際に表示される警告で、ユーザーには「〜は応答していません」というダイアログとして表示されます。ここでいう重たい処理というのは具体的には以下の通りです。 メインスレッド上で5秒以上かかる処理を実行する BroadcastReceiverが10秒以内