《Android开发艺术探索》 学习笔记---线程池(3)---HandlerThread

本文探讨了HandlerThread在Android开发中的作用,它是一个内置Looper的线程类,常用于IntentService。解释了HandlerThread与普通Thread的区别,并详细分析了HandlerThread的源码,包括quit和quitSafely方法的实现,强调了在不再需要HandlerThread时正确关闭的重要性。
摘要由CSDN通过智能技术生成

由于书中篇幅有限,所以是书中的一些加上网上的文章构成。


先看一下HandlerThread特点:

1,HandlerThread本质上是一个线程类,它继承了Thread。

2,HandlerThread有自己的内部Looper对象,可以进行looper循环。

3,通过获取HnadlerThread的Looper对象传递给Handler对象,可以在handleMessage方法中执行异步任务。

4,创建HandlerThread后必须先调用HandlerThread.start()方法,Thread会先调用run方法,创建Looper对象。


书中提到的HandlerThread与Handler区别:

普通Thread主要用于在run方法总共执行一个耗时任务,而Hanlder在内部创建了消息队列,外界需要通过Handler的消息方式来通知HandlerThread执行一个具体的任务。HandlerThread是一个很有用的类,它在Android中的一个具体的使用场景是IntentService。由于HandlerThread的run方法是一个无限循环,因此当明确不需要再使用HandlerThread时,可以通过它的quit或者quitSafely方法来终止线程的执行,这是一个良好的习惯。

具体实际中使用一下(网络权限注册别忘了):

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.administrator.hongyangzzx.MainActivity">


    <ImageView
        android:id="@+id/image"
        android:scaleType="fitXY"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView
        android:gravity="center"
        android:textSize="35dp"
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


</LinearLayout>

MainActivity:

public class MainActivity extends AppCompatActivity {

    private String url[]={
            "https://img-blog.csdn.net/20160903083245762",
            "https://img-blog.csdn.net/20160903083252184",
            "https://img-blog.csdn.net/20160903083257871",
            "https://img-blog.csdn.net/20160903083311972",
            "https://img-blog.csdn.net/20160903083319668",
            "https://img-blog.csdn.net/20160903083326871",
            "http://m.qpic.cn/psb?/V10atUEF0hMZbt/xFmVjVscU8.WDx4tauu8XRywLVRjVVoZRIEymEu4p*0!/b/dF8BAAAAAAAA&bo=0AExAQAAAAADB8M!&rf=viewer_4"
    };
    private ImageView imageView;
    private Handler mUIHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            LogUtil.fussenLog().d("次数:"+msg.what);
            ImageModel model = (ImageModel) msg.obj;
            imageView.setImageBitmap(model.bitmap);
            tv.setText(msg.what+"");
        }
    };

    private TextView tv;
    private HandlerThread mHandlerThread;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setCon
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值