HandlerThread主要用于主线程给子线程发消息
package com.zhh.myceshi;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
/**
* HandlerThread主要用于主线程给子线程发消息
*/
public class Activity7 extends Activity {
private Handler handler;
private HandlerThread handlerThread;
private Button btnSend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_7);
btnSend = findViewById(R.id.btnSend);
myThread();
myOnclick();
}
private void myThread(){
// 创建一个子线程,传入线程名称
handlerThread= new HandlerThread("子线程");
// 启动子线程
handlerThread.start();
// handler在指定的子线程中,接收消息,并且指定looper接收
// handlerThread.getLooper()如果是一般的子线程,可能出现空指针异常
handler = new Handler(handlerThread.getLooper()){
@Override
public void handleMessage(Message msg){
Log.e("111","线程名称>>>"+Thread.currentThread().getName());
}
};
}
private void myOnclick(){
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.sendEmptyMessage(1);
}
});
}
}
布局文件activity_7.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.zhh.myceshi.Activity7">
<Button
android:id="@+id/btnSend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="handlerThread测试"
/>
</RelativeLayout>
参考视频:
https://www.imooc.com/learn/267
源码下载
https://download.csdn.net/download/zhaihaohao1/10650382