ANDROID.UF.CAMERA
UF (Use Freed) 指摘は、リソースが解放された後にリソースを使用する試みがある場合に報告されます。ANDROID.UF.CAMERA 警告は、Camera が解放された後に Camera の使用を試みていることを示します。
例 1
コピー
private Camera camera;
private void initCamera() {
camera = Camera.open();
}
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
if (camera != null) {
final CameraPictureCallbackImpl callback = new CameraPictureCallbackImpl();
camera.takePicture(null, null, callback);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
private class CameraPictureCallbackImpl implements Camera.PictureCallback {
private Bitmap bitmap;
public void onPictureTaken(final byte[] bytes, final Camera camera) {
camera.stopPreview();
camera.release();
bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
if (bitmap == null) {
camera.startPreview();
}
}
public Bitmap getBitmap() {
return bitmap;
}
}
43 行目でカメラが解放された場合でもコールバックメソッド 'onPictureTaken(...)' が開始されるため、ANDROID.UF.CAMERA が 46 行目のスニペットに対して報告されます。
拡張機能
このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。