30fps的要求 只能将数据事先缓存到内存里 否则读取速度跟不上 
然而移动设备是没有你所要求的那么大的内存

解决方案 »

  1.   


    1280X768分辨率的照片30张才不到100M的内存啊,现在不是都是上G的内存么?
    内存应该不是问题的关键。
      

  2.   

    你也太天真了,加载1张2M的图片代码写不好都有可能内存溢出。
    不是说整个手机有1G内存,你一个应用就能用到1G内存的,系统是有限制的,android系统跑起来内存耗掉一大半了
      

  3.   

    拿了个1G内存的平板测试了一下,加载到15张以上图片就OOM了。
    加载15张图片的时候,查看系统空闲内存还有近300M。
    dalvik.vm 设置如下:
    dalvik.vm.heapstartsize=8m
    dalvik.vm.heapgrowthlimit=64m
    dalvik.vm.heapsize=384m这个是加载代码:
    private void initBitmap() throws IOException
    {
    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
    File sdCardDir = Environment.getExternalStorageDirectory();
    String path = null;
    for(int i=0;i<MAX_PIC_NUM;i++){
    path = (sdCardDir.getCanonicalPath()+DIR_PATH +             Integer.toString(i)+".bmp");
    bmpList[i] = (getDiskBitmap(path));
    }

    }
    }
      

  4.   

    读取SD卡上的bmp图片:
    private Bitmap getDiskBitmap(String pathString)
    {
    Bitmap bitmap = null;
    try
    {
    File file = new File(pathString);
    if(file.exists())
    {
    bitmap = BitmapFactory.decodeFile(pathString);
    }
    } catch (Exception e)
    {
    // TODO: handle exception
    }
    return bitmap;
    }
      

  5.   

    内存问题先放一边了。
    刷新率问题又来了,网上查了下用 AnimationDrawable 做最简单。
    测试了一下,addFrame()函数设置帧停留时间小于66ms(fps 15)时,肉眼感觉平板屏幕已经有跳帧了。
    (相同的图片循环,在windows上30fps肉眼也可以区分,所以排除图片的问题)
    我想问的是,“感觉跳帧”这个问题,是AnimationDrawable()的问题,还是平板屏幕问题,或是平板显卡问题,又或者是我眼睛问题呢。
      

  6.   

    用Eclipse的Heap测试,貌似一个程序不加largeHeap的话,超过4M就很容易OOM,不过即使加了largeHeap估计也顶不住你这么用!
      

  7.   


    现在千元级别的平板1G内存已经是低配了,不要停留在过去好吧。
    我的测试的程序没经过任何设置,占用内存46M多,运行很好,现在能流畅显示15fps,1280x768的图片循环。
      

  8.   

    感谢niekangshibendan提示,设置了largeHeap,程序可以申请了足够的内存(>100M)。
    不设置largeHeap的话,程序最大只能申请到(dalvik.vm.heapgrowthlimit=64m)64m内存。dalvik.vm 设置如下:
    dalvik.vm.heapstartsize=8m
    dalvik.vm.heapgrowthlimit=64m
    dalvik.vm.heapsize=384m
      

  9.   

    大部分问题已经解决,程序在30fps运行了1个多小时,没发现内存泄露。
    还有个小问题就是,程序框架无法向下自动扩展到已隐藏的系统工具条那块区域,
    没有真正全屏运行。我已另起帖子http://bbs.csdn.net/topics/390695627,如解决问题,
    两个帖子一起结算。谢谢各位的帮助。