【发布时间】:2021-04-25 15:28:02
【问题描述】:
我使用MediaProjection 创建VirtualDisplay 来截图。之后,我尝试释放virtualDisplay,但没有成功:
// create virtual display...
mVirtualDisplay = sMediaProjection.createVirtualDisplay(DISPLAY, mWidth, mHeight, mDensity,
VIRTUAL_DISPLAY_FLAGS, mImageReader.getSurface(), null, null);
// release it after taking screenshot successfully
if (mImageReader != null){
mImageReader.setOnImageAvailableListener(null, null);
if (mImageReader.getSurface() != null) {
mImageReader.getSurface().release();
}
mImageReader.close();
}
if (mVirtualDisplay != null) mVirtualDisplay.release();
if (sMediaProjection != null) sMediaProjection.unregisterCallback(MediaProjectionStopCallback.this);
mVirtualDisplay = null;
mImageReader = null;
几分钟后,我调用了这个函数displayManager.getDisplays() --> 我看到了一些没有被释放的虚拟显示。
如何彻底释放?有什么我错过的吗?
P/s:和question: Android VirtualDisplay.release() not releasing the display 差不多,但是我还没有找到解决办法。
【问题讨论】:
-
您是否检查过堆转储中的泄漏引用以了解问题的根源?您还可以添加一个最低工作示例来重现该问题吗
标签: android android-mediaprojection android-virtualdisplay