分享缘由:因为自己在项目中遇到过这些问题,并解决了这些问题。为正在奋斗的亲们提供一些遇到下列问题的解决方案;大神勿喷。。。
对于程序员的Android5.0简介
说说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自己绘制,这样可以节约不少内存消耗