gpt4 book ai didi

android - 如何避免 View.getDrawingCache() 中的空指针?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:32 30 4
gpt4 key购买 nike

我的应用有这段代码

mView.setDrawingCacheEnabled(true);
mBitmap = Bitmap.createBitmap(mView.getDrawingCache());

其中 mView 是 FrameLayout 的自定义子类的实例。该应用程序已经运行了 6 个月,现在有数千名用户。最近我收到了一些关于传递给 createBitmap() 的空指针的报告(可能来自同一用户,但我无法确认)。我不知道用户使用的是什么硬件或安卓版本。

什么会导致 getDrawingCache() 返回 null,即使我在它之前启用了缓存?它与新手机的硬件加速有关吗?是因为位图的内存不足吗?还要别的吗?可以预防吗?

编辑:我在这里找到了这个解决方案 http://tinyurl.com/7yranvj .这是一个合理的解决方法吗?

mBitmap = Bitmap.createBitmap(mView.getWidth(), mView.getHeight(),
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBitMap);
mView.draw(canvas);

最佳答案

其实你猜对了。如果您使用的是硬件加速层,则不能使用绘图缓存。新设备默认启用硬件加速,因此这可能是您的问题。您可以像这样为单个 View 关闭硬件加速。

if(android.os.Build.VERSION.SDK_INT >= 11) frame.setLayerType(LAYER_TYPE_SOFTWARE, null);
frame.setDrawingCacheEnabled(true);

关于android - 如何避免 View.getDrawingCache() 中的空指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731189/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com