Handler&HandlerThread&Thread&AsyncTask详解

Handler防止内存泄漏:

1.声明弱引用:

static classmyHandler extends Handler {

    WeakReference<Activity >mActivityReference;

 

    myHandler(Activity activity) {

        mActivityReference= newWeakReference<Activity>(activity);

    }

 

    @Override

    public void handleMessage(Message msg) {

    //消息处理......

mActivityReference.get().控件更新

    }

}

2.activity关闭的时候停掉子线程,handler.removeCallbacks方法

 

Looper.Handler.Message三者关系

其实Looper负责的就是创建一个MessageQueue

消息的创建者就是一个或多个Handle

 

LooperMessageQueue并读Message

Handler发送Message

 

Looper构造方法创一个消息队列

 

Looper.prepare()方法不能被调用两次

所以一个线程中只有一个Looper实例

 

Looper.looper()必须在Looper.perpare()后执行

作用是拿到消息队列,无限循环读消息

 

Handler处理UI更新

 

HandlerThread赋予Handler处理网络请求能力,但不能更新UI

        handler=new Handler(ht.getLooper(), newHandler.Callback())

 

Thread处理网络请求

AsyncTask处理网络请求加UI更新,使用多了会卡顿,可以使用静态方法.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值