我们在Android开发中,像Handler+Thread用的很多,虽然写起来麻烦,但我感觉还是有必要写一下 温故而知新!
首先,我先上代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//启动线程
new Thread(r).start();
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
/**
* 界面Ui操作
*/
break;
}
}
};
Runnable r = new Runnable() {
@Override
public void run() {
//耗时操作
Message msg = Message.obtain();
//类似于ID或Tag或者说是标签
msg.what = 1;
//obj 你懂得
msg.obj = "";
handler.sendMessage(msg);
}
};
Handler是怎么用的?Thread又是怎么用的?
整体思路:handler是处理消息的,Thread是处理耗时操作的, 就拿登入来说,我们要登入,第一步网络请求,耗时操作,所以我们就得启动一个线程来网络请求数据,第二步,我们现在处于线程中吧,但是要界面更新,界面更新只能在主线程中写,所以我们要通过发送消息来把界面要的东西带出去,因此我们得新建Handler 用handleMessage()来根据ID标签识别,然后把接收到的信息,设置到界面上去。(也就是 Thread-->sendMessage--->handleMessage))
新建message 建议使用 Message msg=Message.obtain();
msg.what 相当于 ID标签
msg.obj 相当于传输的数据包 是obj类型
handler.postDelay() 延迟操作。