Andriod之Handle用法

引入

正常情况下,项目的开发需要前后端进行配合,后端负责提供数据和存储数据,采用的是多线程的操作方式。而前端涉及到用户体验,传统的操作方式线程存在等待问题,无法提供优秀的用户体验感,所以引入了异步的概念,相关内容在JavaScript 和 Andriod等前端较为明显。
异步就是说,将需要等待的任务使用另外的线程运行,运行结果通过回调方法进行通知,用户只需要调用该异步方法,并编写回调方法,获取线程完成结果。

Handle

Handle就是Andriod异步开发的一种实现方式,在学习Handle的时候,首先需要掌握Handle的运行机理。

  1. Looper:
    Looper负责创建异步线程栈MessageQueue,并且循环读取Message,当MessageQueue栈为空时,就进行阻塞。

  2. Message:
    Message由Handle进行创建,创建之后放入Looper创建的MessageQueue栈中,由Looper进行处理。

使用步骤

  1. 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);
  1. postDelayed(Thread,Time)
    该方法用于延迟开启线程
Handler handler = new Handler(
    Runnable updateThread = new Runnable(){  
    @Override  
    public void run(){  
        system.out.println(“updateThread线程”);  
    }  
} 
)
handler.postDelayed(updateThread ,3000);  

猜你喜欢

转载自www.cnblogs.com/acompe/p/12368742.html