StrictMode は Gingerbread から追加されたユーティリティで、以下のような望ましくない処理を検出して、ログなどに出力させることができるようになっています。
ただし、JNI 実装内でのディスクアクセスやネットワークアクセスなどは検出されない可能性があるので過信は禁物です。 StrictMode によって何を検出したいかの設定(detectXxx 設定)や、検出した場合にどこに出力するかの設定(penaltyXxx 設定)は、以下のようにコード内で行います。
// For example, detect everything and log anything that's found:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.build();
StrictMode.setThreadPolicy(policy);
ここではスレッドに関連するポリシーである StrictMode.ThreadPolicy
の設定を行っていますが、VM に対する StrictMode.VmPolicy
の設定も同様に行うことができます。
Logcat のログを、StrictMode タグで絞り込んで、さらにパッケージ名で絞り込むと、StrictMode によって検出された問題個所を素早く見つけることができます。
# logcat -s StrictMode:* | grep -e 'violation' -e 'com.yourcompany' &