Android 5.0 SDK 一些技术问题

分享缘由:因为自己在项目中遇到过这些问题,并解决了这些问题。为正在奋斗的亲们提供一些遇到下列问题的解决方案;大神勿喷。。。

对于程序员的Android5.0简介

Android 4.4 中谷歌为开发者提供了两种编译模式,一种是默认的 Dalvik模式,而另外一种则是 ART模式
2014年谷歌正在对Android系统进行调整,简单点说就是ART已经取代Dalvik成为默认选项。一直以来,Dalvik虚拟机背负着Android应用卡顿的罪名,原因则是应用在运行的过程中,虚拟机Dalvik通过一个叫JIT(Just-in-time)的解释器动态的进行编译并执行,这一过程也拖慢了运行效率。
与之形成鲜明对比的ART模式,则是在用户安装应用时就进行预编译操作,将原本在程序运行中时的编译动作提前到应用安装时。在省去解释代码这一过程之后,应用的运行效率会更高。
此外,有开发者往Android开源项目中提交代码时发现,ART已经取代Dalvik成为默认选项,不过Dalvik并没有被放弃,这无疑是个不错的消息,对于在2014年到来的大改版 Android L来说,它的系统执行效率会更高。

说说Android 5.0给我们带来的问题:

1.ART 预编译

编译是快了很多,但同时也为我们程序带来一些无法避免的问题;例如:setImageBitmap,setImageResource,setBrackground导致的内存溢出

2.内存控制

ImageView/Button使用,在使用ImageView/Button过程,最好是自定义一个ImageView/Button,重写一下setImageBitmap,setImageResource,setBrackground等,当然最后还是super.setImageBitmap,setImageResource,setBrackground这些方法调用,但是在super的前提我们需要对当前View进行释放;

/**
* imageView released

* @param imageView
*/
public final static void recycleImageView(ImageView imageView) {
if (imageView != null) {
Drawable drawable = (Drawable) imageView.getDrawable();
if (drawable != null) {
drawable.setCallback(null);
}
imageView.setImageDrawable(null);
}
}


/**
* button released

* @param button
*/
public final static void recycleButton(Button button) {
if (button != null) {
Drawable drawable = (Drawable) button.getBackground();
if (drawable != null) {
drawable.setCallback(null);
}
button.setBackground(null);
}
}

3.Tab切换

原来好多APP都采用各种底部菜单,包括TabHost,Fragment,ViewPager等,这里说下Tabhost问题,我现在的处理方式是:不用原生的TabHost.onTabChanged,而是自定义一个TabChangedListener来实现Tab的切换,这样可以避免使用Android原生Tab切换的时候,他源代码中做的一系列操作;


最后在说一个比较实用的,Android5.0后,一个资源图片文件,不是复杂图形组合,建议使用shape自己绘制,这样可以节约不少内存消耗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值