引入
正常情况下,项目的开发需要前后端进行配合,后端负责提供数据和存储数据,采用的是多线程的操作方式。而前端涉及到用户体验,传统的操作方式线程存在等待问题,无法提供优秀的用户体验感,所以引入了异步的概念,相关内容在JavaScript 和 Andriod等前端较为明显。
异步就是说,将需要等待的任务使用另外的线程运行,运行结果通过回调方法进行通知,用户只需要调用该异步方法,并编写回调方法,获取线程完成结果。
Handle
Handle就是Andriod异步开发的一种实现方式,在学习Handle的时候,首先需要掌握Handle的运行机理。
Looper:
Looper负责创建异步线程栈MessageQueue,并且循环读取Message,当MessageQueue栈为空时,就进行阻塞。Message:
Message由Handle进行创建,创建之后放入Looper创建的MessageQueue栈中,由Looper进行处理。
使用步骤
- sendMessage(Message msg, long delayMillis):
该方法与用于服务端发送数据,前端接受数据并进行处理
前端:
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
// TODO 更新UI
textView.setText("Hello, World!"); //textView是一个TextView的对象,通过 TextView textView= (TextView) findViewById(R.id.text);获取。 text是该TextView的id
break;
}
}
};
后端:
handler.sendEmptyMessage(0);
- postDelayed(Thread,Time)
该方法用于延迟开启线程
Handler handler = new Handler(
Runnable updateThread = new Runnable(){
@Override
public void run(){
system.out.println(“updateThread线程”);
}
}
)
handler.postDelayed(updateThread ,3000);