正在做一个Android的APP
要求是先有一个几率着数据的txt文件
数据内容如下2.2
3.5
6.3
2.3也就是一行储存一个小数,大约有122W行
要求是程序开启时读入这些数据,然后根据数据填充成为一个1280*960的bitmap
现在的程序是这样的,首先一行一行读取数据,
放在一个数组floodData里,然后根据要求开始生成图片
这么做的确可以做到需求,但是效率很低,速度非常慢,还经常出现莫名其妙的程序退出
读取文件的时候InputStream in = getResources().getAssets().open("height.dat");
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
for (int i = 0; i < 960; i++)
 {
   for (int n = 0; n < 1280; n++)
   {
     floodData[n][i] = (Float.parseFloat(reader.readLine()));
   }
 }下面是处理数据的部分Bitmap bm = Bitmap.createBitmap(1280, 960, Config.ARGB_4444);
bm.eraseColor(Color.TRANSPARENT);
for (int i = 0; i < 1280; i++)
{
  for (int n = 0; n < 960; n++)
   {
     if ((floodData[n][i]) < h)
bm.setPixel(n*2, i*2, Color.BLUE);

   }
}请求大家帮忙看看如何可以优化
比如原数据储存的方式
如何读取数据比较快速
如何可以告诉生成图片并且向屏幕快速填充
谢谢大家了

解决方案 »

  1.   

    1、增加BufferedReader 缓冲区大小
    2、一般文件读取比较慢,所以读取和处理分在两个线程里面同时进行,做好同步就好
    楼下继续
      

  2.   

    1.用ASyncTask.
    2.把数据存为整数数字 int color[960*1280],然后根据条件直接把对应的位设置为blue,最后用createbitmap,color[]为参数,直接创建位图。
    3.存文件,不知道存为 960 * 1280的样子,减少了读取文件的次数,这样不知道效率会怎么样。想到了这么多,不知道对不对,可以讨论一下