作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
各位!
我根据应用程序中的一些数据绘制了一个图。该图具有滚动和缩放功能。为此,我在 MyMainFragment.onActivityCreated() 中创建了 2 个位图。
if (bitmaps[0] != null)
{
return;
}
final int deviceWidth = getResources().getDisplayMetrics().widthPixels;
final int deviceHeight = getResources().getDisplayMetrics().heightPixels;
final int deviceMaxDim = Math.max(deviceHeight, deviceWidth);
bitmaps[0] = Bitmap.createBitmap(
deviceMaxDim * 2,
deviceMaxDim * 1,
Bitmap.Config.ARGB_8888);
bitmaps[1] = Bitmap.createBitmap(
bitmaps[0].getWidth(),
bitmaps[0].getHeight(),
bitmaps[0].getConfig());
由于我使用的绘图算法,我需要 2 个位图,而不仅仅是 1 个。在 Asus Transformer 上运行程序,以像素为单位的 bmp 大小为 1280 * 2 * 1280,因此字节大小为 1280 * 2 * 1280 * 4。当我从 Eclipse 运行程序时,一切正常。但是当我像普通用户一样从平板电脑启动它时,它每隔一秒就会崩溃。
当我从允许它运行的 Eclipse 启动我的应用程序时,幕后发生了什么,我能否以编程方式遵循相同的步骤,以便它在正常启动时不会崩溃?或者我应该使用其他一些绘图算法(可能是 OpenGL 之类的算法)?
非常感谢。
最佳答案
解决方案很简单。我在我的代码中某处创建了一个 Canvas,在上面调用了 Canvas#setBitmap(bitmaps[?]),但没有意识到我必须调用 Canvas.setBitmap(null) 来释放引用。
关于android - 并不总是创建大位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10532832/
我是一名优秀的程序员,十分优秀!