ANDROID.UF.MEDIARECORDER
UF (Use Freed) 指摘は、リソースが解放された後にリソースを使用する試みがある場合に報告されます。ANDROID.UF.MEDIARECORDER 警告は、MediaRecorder が解放された後に MediaRecorder の使用を試みていることを示します。
例 1
コピー
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
MediaRecorder mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
final File file = new File("test.raw");
if (file.exists()) {
mRecorder.release();
} else {
mRecorder.setOutputFile(file.getPath());
}
mRecorder.start();
mRecorder.release();
return true;
}
return super.onKeyDown(keyCode, event);
}
出力ファイルが存在する場合に解放 (25 行目) される「mRecorder」を使用する試みがあるため、ANDROID.UF.MEDIARECORDER が 30 行目のスニペットに対して報告されます。
拡張機能
このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。