java图片异步加载_Listview异步加载图片之优化篇

本文介绍了在Android应用中优化ListView图片异步加载的方法,包括从内存、SD卡和网络加载图片的策略,以及如何通过缓存和线程池提高性能。文章通过示例代码展示了关键的ImageLoader类及其优化措施,如根据滑动状态决定加载策略和使用LRU内存缓存。
摘要由CSDN通过智能技术生成

在APP应用中,listview的异步加载图片方式能够带来很好的用户体验,同时也是考量程序性能的一个重要指标。关于listview的异步加载,网上其实很多示例了,中心思想都差不多,不过很多版本或是有bug,或是有性能问题有待优化。有鉴于此,本人在网上找了个相对理想的版本并在此基础上进行改造,下面就让在下阐述其原理以探索个中奥秘,与诸君共赏…

贴张效果图先:

172545kidldaa95isjldyl.png

2013-2-1 17:25 上传

下载附件 (214.08 KB)

异步加载图片基本思想:

1.      先从内存缓存中获取图片显示(内存缓冲)

2.      获取不到的话从SD卡里获取(SD卡缓冲)

3.      都获取不到的话从网络下载图片并保存到SD卡同时加入内存并显示(视情况看是否要显示)

OK,先上adapter的代码:

代码片段,双击复制

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

public class LoaderAdapter extends BaseAdapter{

private static final String TAG = "LoaderAdapter";

private boolean mBusy = false;

public void setFlagBusy(boolean busy) {

this.mBusy = busy;

}

private ImageLoader mImageLoader;

private int mCount;

private Context mContext;

private String[] urlArrays;

public LoaderAdapter(int count, Context context, String []url) {

this.mCount = count;

this.mContext = context;

urlArrays = url;

mImageLoader = new ImageLoader(context);

}

public ImageLoader getImageLoader(){

return mImageLoader;

}

@Override

public int getCount() {

return mCount;

}

@Override

public Object getItem(int position) {

return position;

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder = null;

if (convertView == null) {

convertView = LayoutInflater.from(mContext).inflate(

R.layout.list_item, null);

viewHolder = new ViewHolder();

viewHolder.mTextView = (TextView) convertView

.findViewById(R.id.tv_tips);

viewHolder.mImageView = (ImageView) convertView

.findViewById(R.id.iv_image);

convertView.setTag(viewHolder);

} else {

view

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值