我有一个PDF,我想显示在一个ImageView。它显示在API 24-28上,但是API 29上没有图像显示。我认为问题可能是PDFRenderer创建的位图。
我在.render方法之后放置了一个断点,(在调试器中)在这里单击“查看位图”:

在API 29上,我有时得到图像,有时得到这个错误:
在计算表达式时出现
错误,对象已被收集

在API 24-28上,我没有得到这个错误。我总是能看到你的形象。
下面是示例代码:
File file = new File(getExternalFilesDir(null), "fileName.pdf");
PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
if (currentPage < 0) {
currentPage = 0;
} else if (currentPage > renderer.getPageCount()) {
currentPage = renderer.getPageCount() - 1;
}
Bitmap bitmap = Bitmap.createBitmap(800, 1000, Bitmap.Config.ARGB_8888);
Rect rect = new Rect(0, 0, 800, 1000);
PdfRenderer.Page page = renderer.openPage(currentPage);
page.render(bitmap, rect, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page.close();
renderer.close();
image.setImageBitmap(bitmap);
image.invalidate();有人知道为什么图像总是显示在API 24-28上而不是API 29上吗?
发布于 2020-08-11 15:52:28
我也是在API 30上碰到这个的。现在看来,垃圾收集对于位图来说可能更有侵略性。我通过将问题位图的范围从私有更改为公共,并在相关视图被销毁时将其设置为空来解决这个问题。
https://stackoverflow.com/questions/59167434
复制相似问题