public class Demo{
private static final String TAG = "Demo";
private HandlerThread mHandlerThread = null;
private Handler mHandler= null;
public void init() {
// start CallBackThread
mHandlerThread = new HandlerThread("tcpHanler");
mHandlerThread.start();
mHandler = new MyHanler(mHandlerThread.getLooper());
}
public void sayHello(String scenarios) {
Message msg = new Message();
msg.what = 1;
msg.obj = "hello";
mHandler.sendMessage(msg);
}
private class MyHanler extends Handler {
public MyHanler (Looper looper) {
super(looper);
}
@Override
public void handleMessage(@NonNull Message msg) {
switch(msg.what){
case 1:
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.e(TAG, "handleMessage: meaagse = " + String.valueOf(msg.obj));
break;
default:
Log.e(TAG, "handleMessage: error meaagse what");
break;
}
}
}
通过以上方法,可以将耗时操作抛到另一个线程去做,不占用主线程资源,不会卡住主线程,比如通信连接等调用