很久没有写博客了哈,最近的确是被工作给缠住了。因为前些日子辞职回去休息了一段时间,再出来找工作,发现今年就业形势好困难,尤其是搞iOS,那叫一个悲催啊。我加的几个技术群里都在说找工作难的事情,都不容易。自己本来也想找找iOS的工作的,但无奈经验太少,就做了半年(虽然才半年但我感觉iOS前端也没啥难的啊。。),看今年这就业形势就放弃了,继续做我的Android开发了。不过这样也好,本身自己就偏向于做Android,因为可以看源码,能接触内核,自己还计划要做个相关的东西的,所以暂时安定下来就继续努力吧。
这篇博客就随便凑个数。
因为现在在做应用优化,所以天天抠内存,抠程序运行效率。就算效率只能提升10ms也要去优化,所以现在关注点都在很细节的东西上。一扯上细节就要讲很多,写下来的话会更多。所以后面的博客会慢慢整理这些东西,可能周期会比较长。再然后,就是我已经构思好一个APP了,正在和我的御用美工讨论细节和界面,希望我能坚持下去~
平时应用的一些切图都会放在 res/drawable
文件夹下。在平时代码中看到的比较多的用法就是:
getResource().getDrawable(id, theme);
来获取一个 Drawable
对象,这个对象是可以转换为 Bitmap
对象的,比如像这样:
BitmapDrawable bd = (BitmapDrawable)getResource().getDrawable(id, theme); Bitmap mBitmap = bd.getBitmap();//好像是这个方法
这都是常用的。呐我后来在项目里遇到这样获取图片资源的方法:
BitmapFactory.decodeResource(getResource(), id);
这个方法返回的直接是一个 Bitmap
。好吧,其实这个方法也很常见,其优点自己去google吧,不扯这个。但我感觉到获取一个资源图片,不过是贴个图,需要用到 BitmapFactory
去 decode
吗?
直觉告诉我这里可能会有问题,但我没证据啊!所以写了一段测试代码,代码就不放了,因为在公司测试的,代码带不出来。逻辑就是循环调用上述三个方法,看每个方法的耗时情况。
所以我这里就直接给出测试结果:
getResource().getDrawable(id, theme);
方法获取资源图片的效率是非常高的。而且只调用一次–即不论对同一张图片循环调用多少次,执行时间是相同的! BitmapFactory.decodeResource
方法获取图片效率比前者低得非常多。而且根据图片像素数量的增多,耗时差距也不断增加。 Bitmap
对象,方便使用。嗯,是的。那把第一个方法获取到的 Drawable
转化为 Bitmap
要消耗多少时间呢?经过测试,使用 getResource().getDrawable(id, theme);
并转化为 Bitmap
所消耗的时间和直接获取到 Drawable
消耗的时间一样!!!对,我也惊呆了。 以上只是我的一个简单测试,方法和结论未必是正确的。这里我只是提一个观点,剩下的交给大家去讨论了,一起学习进步嘛!至于为什么会产生这样的结果,这个我就不深究了,有兴趣研究的,最好写个研究成果,顺便@我一下~