EN JP CN

ANDROID.UF.CAMERA

ANDROID.UF.CAMERA

UF (Use Freed) 問題は、リソースが解放された後にリソースを使用する試みがある場合に報告されます。ANDROID.UF.CAMERA 警告は、Camera が解放された後に Camera の使用を試みていることを示します。

例 1

21     private Camera camera;
22 
23     private void initCamera() {
24         camera = Camera.open();
25     }
26 
27     public boolean onKeyDown(final int keyCode, final KeyEvent event) {
28         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
29             if (camera != null) {
30                 final CameraPictureCallbackImpl callback = new CameraPictureCallbackImpl();
31                 camera.takePicture(null, null, callback);
32             }
33             return true;
34         }
35         return super.onKeyDown(keyCode, event);
36     }
37 
38     private class CameraPictureCallbackImpl implements Camera.PictureCallback {
39         private Bitmap bitmap;
40 
41         public void onPictureTaken(final byte[] bytes, final Camera camera) {
42             camera.stopPreview();
43             camera.release();
44             bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
45             if (bitmap == null) {
46                 camera.startPreview();
47             }
48         }
49 
50         public Bitmap getBitmap() {
51             return bitmap;
52         }
53     }

43 行目でカメラが解放された場合でもコールバックメソッド 'onPictureTaken(...)' が開始されるため、ANDROID.UF.CAMERA が 46 行目のスニペットに対して報告されます。

拡張機能

このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。