Androidでブレークポイントを張った時にDDMSとの接続が切れてしまう件について

Androidアプリの動作確認をしていたら、
とあるブレークポイントで短時間でDDMSとの接続が切れてブレークが外れてしまうことがありました。
探してもまとまった情報がなかったので個人的にメモ。

起こった事象

  1. 特定のブレークポイントAndroidとDDMSの接続が短時間で切れてしまう

解決策

端末の設定から「開発者オプション」を選択して「すべてのANRを表示」にチェックを入れる。
ブレークポイントで止めているとANR(アプリから応答がない状態)を検知してアプリの処理完了を待機するか
アプリを強制終了させるかの選択肢が出るので「何もしない」か、「待機」を選択する。

原因

  1. ブレークポイントを張っている箇所がBroadcast Receiverを継承したクラスだった。
  2. ブレークポイントで止めていると、AndroidがANRと判定していた。

通常、ANRが発生すると、そのアプリの処理終了を待機するか強制終了するかのダイアログが出るが、
Broadcast ReceiverでANRと思われる状態が発生してから10秒経つとダイアログは表示せずに自動的に強制終了されてしまうんだとか。
(参考: 10日でおぼえるAndroidアプリ開発入門教室 - Google ブックス )


なので、端末の設定からすべてのANRで確認ダイアログが出るようにしてあげれば強制終了されずに選択できるわけですね。


これでおちついて動作確認できそうです。