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 解析のチューニングを参照してください。