黑马程序员-Java-Android内存优化
来源:互联网 发布:python编写网页登录 编辑:程序博客网 时间:2024/05/21 08:39
-------------------------ASP.Net+Unity开发、.Net培训、期待与您交流!--------------------------
//内存缓存实例
private final HashMap<String,SoftReference<T>> mCache;public void put (String key, T value){mCache.put(Key,new SoftReference<T>(value));}public T get(String key, ValueBuilder builder){T value =null;softReference<T> reference =mCache.get(key);if(reference !=null){value =reference.get();}if(value == null){value=builder.build(key);mCache.put(key,new Softreference<T>(value));}return value;}/*Adapter 时listview和数据源的中间人当每条数据进入可见区时,adapter的getView()会被调用,并返回代表具体数据的视图,触摸滚动时频繁调用,支持成百上千条数据*/public View getView(int pos, View convertview,ViewGroup parent){view item= mInflater.inflate(R.layout.list_item,null);((TextView)item.findViewById(R.id.text)).setText(Data[pos]);((ImageView)item.findViewById(R.id.icon)).setImageBitmap((pos&1)==1?mIcon1:mIcon2);return item;}//最简单的方法,最慢最不适用//利用convertView回收视图,效率提高200%if(convertview==null){converview = mInflater.inflate(R.layout.list_item,null);}((TextView)converview.findViewById(R.id.text)).setText(Data[pos]);//使用ViewHolder模式效率再提高50%static class ViewHolder{TextView text;ImageView icon;}public View getView(int pos, View convertview,ViewGroup parent){ViewHolder holder;if(convertview ==null){convertview=mInflater.inflate(R.layout.list_item,null);holder= new ViewHolder();holder.text=(TextView)convertview.findViewById(R.id.text));holder.icon=(ImageView)convertView.findViewById(R.id.icon));convertview.setTag(holder);}else{holder=(ViewHolder)convertview.getTag();}holder.text.setText(Data[pos]);holder.icon.setImageBitmap((pos&1) ==1?mIcon1:mIcon2);return convertView;}//背景和图片最好预先缩放到视图大小originalImage=Bitmap.createScaleBitmap(originalImage,//被缩放的图片view.getWidth(),//视图宽view.getHeight(),//视图高true);//双线性过滤删除窗口背景修改编码 getWindow().setBackgroundDrawable(null);修改xml声明在res/values/styles.xml中定义<resources><style name ="NoBackgroundTheme" parent="android:Theme"><item name="android:windowBackground">@null</item></style><resources>然后编辑AndrMainfest.xml<Activity android:name="mactivity"android:theme="@style/NoBackgroundTheme">更新屏幕局部无效区域invalidate(Rest dirty);invalidate(int left,int top,int right, int bottom);视图和布局,越简单越好使用TextView的复合drawables减少层次<Textview android:layout_width="warp_content"android:layout_height="warp_content"android:text="@string/hello"android:drawableLeft="@drawable/icon"/>使用viewStub延迟展开视图使用<merge>合并中间视图<merge xmlns:android="http://schemas.android.com/apk/res/android">相同的头部或尾部</merge><include layout="@layout/head">使用RelativeLayout减少层次android:layout_alignParentLeft="true"//相对父窗体对齐父窗体左边android:layout_alignParentTop="true"//对齐父窗体上面android:layout_centerVertical="true"//竖直方向居中android:layout_toRightOf="@id/icon"//icon的右边android:layout_below="@id/icon"//icon的下面使用自定义视图和布局自定义视图class CustomView extends View{protected void onDraw(Canvas canvas){//加入自己的绘图编码}protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){//setMeasureDimension(widthSpecSize,heightSpecSize);}}自定义布局class GridLayout extends viewGroup{protected void onLayout(boolean changed, int l,int t,int r,int b){final int count=getChildCount();for(int i=0;i<count;i++){final View child=getChildAt(i);if(child.getVisibility()!=GONE){//计算字视图的位置child.layout(left,top,right,bottom);}}}}
内存管理分配
在性能敏感的代码里,尽量避免创建java对象
测量 onMeasure();
布局 onLayout();
绘图 dispatchDraw(),onDraw();
事件处理dispatchTouchEvent(),onTouchEvent(),
适配器:getView(),bindView(),
--------------------------ASP.Net+Unity开发、 .Net培训、期待与您交流!-----------------------
详情请查看:http://edu.csdn.net
0 0
- 黑马程序员-Java-Android内存优化
- 黑马程序员-java内存管理
- 黑马程序员-Java内存结构
- 黑马程序员----Java内存问题
- 黑马程序员 android-handler-防止内存泄露
- 黑马程序员——Java内存分析
- 黑马程序员-java内存分配的策略
- 黑马程序员-java的内存结构
- 黑马程序员——Java内存结构
- 黑马程序员——Java内存结构
- Java内存机制以及Android内存优化
- 黑马程序员---内存分析
- 黑马程序员-内存管理
- 黑马程序员---内存
- 黑马程序员-------关于内存
- 黑马程序员------内存管理
- 黑马程序员---内存管理
- 黑马程序员--OC-内存
- ssrs报表连接64位oracle
- AOP 的利器:ASM 3.0 介绍
- sizeof和strlen
- Oracle数据库对象(共12个)DDL
- impdp fail with ora 31623
- 黑马程序员-Java-Android内存优化
- oracle 启动不了的常见故障
- 无线显示已经连接,但是不能上网,其他人却能上网
- minix3.1.8源代码解读(一)
- [HTML]DIV+CSS clear both清除产生浮动
- Android 的 Actionbar 官方文档详解 一看就懂
- 第10天 Java static关键字
- 生活
- Django 之 csrf_token