android - android 数组无法存储 2.4MB 的数据
问题描述
我试图通过快速切换图像和扩展视图来制作自定义动画播放器,所以我不得不将BitMap
s 加载到一个数组中,整个142
图像只有 2.4MB 大小,我什至声明android:largeHeap="true"
它Manifest
给出了内存错误。源代码如下:
package com.mexample.bitsmap;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.Log;
import android.view.View;
public class bitMapTest extends View {
long startTime=0;
long endTime=0;
int[] drawables;
int noOfImages = 0;
int I = 0;
long drawStartTime = 0;
long drawEndTime = 0;
int scaleWidth = 400;
int scaleHeight = 225;
Bitmap scaledImage = null;
public bitMapTest(Context context) {
super(context);
long loadStartTime = System.nanoTime();
Bitmap[] drawables = new Bitmap[]{
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_000),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_001),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_002),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_003),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_004),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_005),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_006),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_007),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_008),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_009),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_010),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_011),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_012),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_013),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_014),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_015),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_016),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_017),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_018),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_019),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_020),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_021),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_022),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_023),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_024),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_025),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_026),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_027),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_028),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_029),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_030),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_031),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_032),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_033),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_034),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_035),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_036),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_037),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_038),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_039),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_040),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_041),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_042),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_043),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_044),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_045),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_046),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_047),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_048),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_049),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_050),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_051),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_052),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_053),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_054),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_055),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_056),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_057),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_058),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_059),
BitmapFactory.decodeResource(getResources(), R.drawable.atoms_060),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_061),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_062),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_063),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_064),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_065),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_066),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_067),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_068),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_069),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_070),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_071),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_072),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_073),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_074),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_075),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_076),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_077),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_078),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_079),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_080),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_081),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_082),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_083),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_084),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_085),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_086),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_087),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_088),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_089),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_090),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_091),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_092),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_093),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_094),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_095),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_096),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_097),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_098),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_099),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_100),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_101),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_102),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_103),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_104),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_105),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_106),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_107),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_108),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_109),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_110),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_111),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_112),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_113),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_114),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_115),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_116),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_117),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_118),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_119),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_120),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_121),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_122),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_123),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_124),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_125),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_126),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_127),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_128),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_129),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_130),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_131),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_132),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_133),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_134),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_135),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_136),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_137),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_138),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_139),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_140),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_141),
// BitmapFactory.decodeResource(getResources(), R.drawable.atoms_142)
};
long loadEndTime = System.nanoTime();
noOfImages = drawables.length;
Log.e("measure: ", "BitMaps loaded in: " +((loadEndTime - loadStartTime)/1000000000.0)+ " seconds" );
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// I = I % noOfImages;
//
// if(I==0){
// drawStartTime = System.nanoTime();
// Log.e("measure: ", "draw startTime: "+ drawStartTime/1000000000.0);
// }
//
// Bitmap newImage = BitmapFactory.decodeResource(getResources(),drawables[I++]);
// scaledImage = Bitmap.createScaledBitmap(newImage,scaleWidth, scaleHeight, false);
//
// canvas.drawBitmap(scaledImage, 0,0,null);
// if(I==noOfImages){
// drawEndTime = System.nanoTime();
// Log.e("measure: ", "draw endTime: "+ drawEndTime/1000000000.0 );
// Log.e("measure: ", "drawing time taken: "+ (drawEndTime-drawStartTime)/1000000000.0 );
// }
// invalidate();
}
}
我什至只评论了60
图像,但仍然给出:OutOfMemory exception
. 为什么会这样?
解决方案
推荐阅读
- javascript - 通过 JavaScript 函数将文本写入画布
- java - Comparable 是原始类型。对泛型类型 Comparable 的引用
应该参数化 - asp.net - 如何使用 MS 网络监视器捕获 IIS 和 Tomcat 的传入请求
- angular - 我的电子应用程序大小是 530mb 。所以,我解压缩了我发现它有 node_modules 文件夹的 asar 文件,该文件夹本身需要 300 mb 如何删除它?
- c# - 如何使用 bootstrap 3 修复导航栏以与 bootstrap 4 一起使用下拉菜单项和站点地图
- javascript - 比较jquery中的两个文本字段
- docker - 无法从 hhtp url 登录到 kubernetes 仪表板,因为 master 的本地主机是 vm
- python - 使用 matplotlib 时出现 numpy 多核错误
- mysql - 错误 1045 (28000): 用户 'applogger'@'10.26.72.109' 的访问被拒绝(使用密码:是)
- mongodb - 带有三个嵌套数组的 mongodb $unwind