ListView 关于减少耗时方法调用优化

private class GirdTemp {
TextView nameTV;
ImageView mGPUImageView;
Bitmap image;
}

===========================================================================================

final GirdTemp temp;

if (convertView == null) {
convertView = mInflater.inflate(R.layout.beautify_horizon_list_items, parent,false);
temp = new GirdTemp();
temp.nameTV= (TextView)convertView.findViewById(R.id.filter_name);
temp.mGPUImageView = (ImageView) convertView.findViewById(R.id.gpuimage);

convertView.setTag(temp);
} else {
temp = (GirdTemp) convertView.getTag();
}

if(temp.image == null){
temp.image = ActivityGallery.mGPUImage.getBitmapWithFilterApplied();
temp.mGPUImageView.setImageBitmap(temp.image);
temp.mGPUImageView.setTag(temp.image);
}else{
temp.mGPUImageView.setImageBitmap((Bitmap)temp.mGPUImageView.getTag());
}

这里:ActivityGallery.mGPUImage.getBitmapWithFilterApplied() 为耗时操作,因此优化方案是减少它的调用,采用 setTag getTag 重复利用它的结果

时间: 2024-07-30 03:01:22

ListView 关于减少耗时方法调用优化的相关文章

Android中ListView的几种常见的优化方法

Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中只包含一个textview: Activity: package com.alexchen.listviewoptimi

浅谈Android中的异步加载之ListView中图片的缓存及优化三

     隔了很久没写博客,现在必须快速脉动回来.今天我还是接着上一个多线程中的异步加载系列中的最后一个使用异步加载实现ListView中的图片缓存及其优化.具体来说这次是一个综合Demo.但是个人觉得里面还算有点价值的就是里面的图片的缓存的实现.因为老实说它确实能在实际的项目中得到很好的应用.主要学习来源于慕课网中的异步加载学习,来自徐宜生大神的灵感.本次也就是对大神所讲知识的一个总结及一些个人的感受吧. 这次是一个综合的Demo,主要里面涉及到的知识主要有:网络编程.异步加载.JSON解析.

函数的调用优化

函数的调用优化 在类中有四大成员函数,构造函数,拷贝构造函数,赋值函数和析构函数,在类外进行实例化时,若调用函数的方法不当则会产生时间和空间的浪费. 以下,将用几个小栗子来说明函数的调用优化的常见办法 类: class Test { public: Test(int d = 0) : _data(d) { cout << "Create Test Object:"<<this << endl; } Test(const Test&x) :_d

C++临时对象减少的方法

C++临时对象产生的场景: 1. 值传递   2. 函数返回   3. 后置++ 等 减少临时对象产生的方法: 1. 使用引用或指针传递 2. 避免隐式类型转换 3. 使用 += 代替 + string x = a + b; // 这里会产生保存a+b值的临时对象 string x(a); x += b; // 这样就不会产生临时对象 4. 使用前置++代替后置++ 前置++的定义: type operator++(); 后置++的定义: const type operator++(int);

求100以内素数的5中基本方法及其优化

求100以内素数的5中基本方法及其优化方法1 基本做法 错解比较:进入了小循环:有时加pass也可以.错解:这里的print也同样注意不要写到循环内. 注释:1.两种条件运用:为合数.2.以上错误点.方法二 注释:1.条件运用,质数除了2都是奇数,因为偶数都能被除了自身外的2整除.改进自12.偶数除了2都不是质数.3.第二个for写的是到开方的奇数.4.奇数含有质数和非质数.偶数除了2一定不是质数.所以先剥离了偶数. 方法三:使用列表 注释:1.break continue pass2.质数i依

java类加载机制及方法调用

类加载机制 概述 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Using)和卸载(Unloading)7个阶段.其中验证.准备.解析3个部分统称为连接(Linking) 于初始化阶段,虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行"初始化"(而加载.验证.准备自然需要在此之前开始): 1

JVM是如何执行方法调用的?(下)

前言....... abstract class 乘客 { abstract void 出境 (); @Override public String toString() { ... } } class 外国人 extends 乘客 { @Override void 出境 () { /* 进外国人通道 */ } } class 中国人 extends 乘客 { @Override void 出境 () { /* 进中国人通道 */ } void 买买买 () { /* 逛免税店 */ } } 乘

普通方法调用,Invoke,begininvoke三者的区别总结

(1)普通方法调用(直接调用)与Invoke()方法调用方法 使用的线程Id是一样的 即属于同步. (2)BeginInvoke(<输入和输出变量>,AsyncCallback callback,object asyncState)方法调用方法 则是启用了新的线程Id       属于异步 可通过 Thread.CurrentThread.ManagedThreadId    获取当前线程的Id *委托类型的BeginInvoke(<输入和输出变量>,AsyncCallback c

02-14 方法重写与虚方法调用

前一篇隐藏的实例中,由于子类隐藏了父类的同名方法,如果不进行强制转换,就无法通过父类变量直接调用子类的同名方法,哪怕父类变量引用的是子类变量. 我们希望的是每个对象“各司其职”. 为了达到这个目的,可以在父类同名方法前加关键字virtual,表明这是一个虚方法,子类可以重写此方法:即在子类同名方法前加关键字override,表明这是对父类同名方法进行了重写. 请看如下代码: 1 class Parent //父类 2 { 3 public virtual void OverrideF() //父