diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java index f92d83af93a0a..9f46f3fc75b04 100644 --- a/core/java/android/view/Surface.java +++ b/core/java/android/view/Surface.java @@ -33,6 +33,18 @@ import dalvik.system.CloseGuard; /** * Handle onto a raw buffer that is being managed by the screen compositor. + * + *
A Surface is generally created by or from a consumer of image buffers (such as a + * {@link android.graphics.SurfaceTexture}, {@link android.media.MediaRecorder}, or + * {@link android.renderscript.Allocation}), and is handed to some kind of producer (such as + * {@link android.opengl.EGL14#eglCreateWindowSurface(android.opengl.EGLDisplay,android.opengl.EGLConfig,java.lang.Object,int[],int) OpenGL}, + * {@link android.media.MediaPlayer#setSurface MediaPlayer}, or + * {@link android.hardware.camera2.CameraDevice#createCaptureSession CameraDevice}) to draw + * into.
+ * + *Note: A Surface acts like a + * {@link java.lang.ref.WeakReference weak reference} to the consumer it is associated with. By + * itself it will not keep its parent consumer from being reclaimed.
*/ public class Surface implements Parcelable { private static final String TAG = "Surface"; diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java index 2cbeb3a260be6..ed718493bd789 100644 --- a/media/java/android/media/ImageReader.java +++ b/media/java/android/media/ImageReader.java @@ -241,6 +241,10 @@ public class ImageReader implements AutoCloseable { * same {@link Surface} can be reused with a different API once the first source is * disconnected from the {@link Surface}. * + *Please note that holding on to the Surface object returned by this method is not enough + * to keep its parent ImageReader from being reclaimed. In that sense, a Surface acts like a + * {@link java.lang.ref.WeakReference weak reference} to the ImageReader that provides it.
+ * * @return A {@link Surface} to use for a drawing target for various APIs. */ public Surface getSurface() {