android listview多线程刷新各自的进度,从另一个线程更新主线程中的ListView

本文讨论了如何在Android应用中使用自定义线程并通过Message传递数据给UI线程,以实现跨线程间的通信,同时强调了避免Handler内存泄露的方法。作者分享了通过弱引用处理外部类引用的最佳实践。
摘要由CSDN通过智能技术生成

Yar..

12

我个人使用自定义线程(扩展线程的类),但通过Message发送响应给UI线程.所以在线程的run()函数中有:

Message msg;

msg = Message.obtain();

msg.what = MSG_IMG_SET;

mExtHandler.sendMessage(msg);

UI线程定义了一个消息处理程序.

private Handler mImagesProgressHandler;

public void onCreate(Bundle bundle) {

mImagesProgressHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case LoadImagesThread.MSG_IMG_SET:

mArrayAdapter.setBitmapList(mImagesList);

mArrayAdapter.notifyDataSetChanged();

break;

case LoadImagesThread.MSG_ERROR:

break;

}

super.handleMessage(msg);

}

};

这实际上比AsyncTask更容易.

小心 - 这里是龙!这个内部Handler类具有对外部类'this的隐式引用.最好使Handler静态并将WeakReference带到外层. (2认同)

@MichaelKrause,为什么这里有问题?处理程序的生命周期不会超过活动的生命周期 (2认同)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值