Application Not Responding (ANR)
AndroidアプリがメインスレッドをブロックしてUIが応答しなくなった場合
概要
ANR(Application Not Responding)は、AndroidアプリがメインスレッドでUIの更新を5秒以上ブロックした場合に発生します。
エラーメッセージ
Application Not Responding
[app name] isn't responding. Do you want to close it?
原因
- メインスレッドでの重い処理: ネットワーク、DB、ファイルI/O
- デッドロック: スレッド間のロック待ち
- 長いループ処理: 大量データの同期処理
- BroadcastReceiverのタイムアウト: 10秒以内に処理が完了しない
解決策
1. Coroutineで非同期処理
| |
2. WorkManagerで長時間処理
| |
3. RxJavaでスレッド切り替え
| |
4. StrictModeで検出
| |
5. 大量データは分割処理
| |
6. BroadcastReceiverは軽量に
| |
Android の他のエラー
この記事は役に立ちましたか?