注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

Android中drawable图片资源占用内存的统计  

2013-05-03 14:27:02|  分类: Android内存 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在实际项目中,我们可能需要统计我们应用程序中drawable下的图片或文本在都载入的情况,最多会占用多少内存 ,以对其做定性分析。 

关于Android中图片占用内存的计算,请参照Android中图片占用内存的计算

以下就是一个简单的统计代码:

static void test(Context context){
    final String TAG="robin";
    long m=0;
    long n=0;
    Class c=R.drawable.class;
    Field f[]=c.getFields();
    int id=0;
    int w=0;
    int h=0;
    Resources res=context.getResources();
    for(int i=0;i<f.length;i++){
        try {
            id=f[i].getInt(null);
        } catch (IllegalArgumentException e) {
           
            e.printStackTrace();
        } catch (IllegalAccessException e) {
           
            e.printStackTrace();
        }
        Drawable d=res.getDrawable(id);
        if(d instanceof BitmapDrawable){
            Bitmap b=((BitmapDrawable)d).getBitmap();
            w=b.getWidth();
            h=b.getHeight();
            n=w*h;
            Log.i(TAG,"the size of "+f[i].getName()+" is "+w+"X"+h +" pixels");
            m=m+n;
        }
    }
    Log.i(TAG,"the area of all bitemap is "+m );
    m=m<<1;
    Log.w(TAG,"in Config.RGB_565,the memory occupied by bitemap:"+(m>>20)+"M"+((m&((1<<20)-1))>>10)+"K");
    m=m<<1;
    Log.w(TAG,"in Config.ARGB_8888,the memory occupied by bitemap:"+(m>>20)+"M"+((m&((1<<20)-1))>>10)+"K");
    c=R.string.class;
    f=c.getFields();
    String str=null;
    m=0;
    for(int i=0;i<f.length;i++){
        try {
            id=f[i].getInt(null);
        } catch (IllegalArgumentException e) {
           
            e.printStackTrace();
        } catch (IllegalAccessException e) {
           
            e.printStackTrace();
        }
        str=res.getString(id);
        m=m+str.length()*2;
    }
    Log.i(TAG,"string:"+(m>>20)+"M"+((m&((1<<20)-1))>>10)+"K"+(m&((1<<10)-1)));

}

运行结果:
I/robin   (21677): the size of app_detail_bottom_menu_divider is 3X5 pixels
I/robin   (21677): the size of cancel is 51X52 pixels
I/robin   (21677): the size of confirm is 51X52 pixels
I/robin   (21677): the size of ic_launcher is 96X96 pixels
I/robin   (21677): the size of item1 is 640X1067 pixels
I/robin   (21677): the size of item2 is 2560X1600 pixels
I/robin   (21677): the size of item3 is 2560X1600 pixels
I/robin   (21677): the size of item4 is 2560X1600 pixels
I/robin   (21677): the size of item5 is 2560X1600 pixels
I/robin   (21677): the size of item6 is 2560X1600 pixels
I/robin   (21677): the size of item7 is 2560X1600 pixels
I/robin   (21677): the size of splash is 640X1067 pixels
I/robin   (21677): the area of all bitemap is 25956295
W/robin   (21677): in Config.RGB_565,the memory occupied by bitemap:49M519K
W/robin   (21677): in Config.ARGB_8888,the memory occupied by bitemap:99M15K
I/robin   (21677): string:0M0K432
结束!
  评论这张
 
阅读(935)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017