概述
在学习怎么使用Handler机制来达到这些效果之前,最好还是对Handler机制、异步通信、同步通信有一个了解,前面发表过一篇博客是关于Handler机制讲解的:http://blog.csdn.net/u013035016/article/details/51181286
在开发中,我们经常会碰到这类问题:
1、网络访问,面对请求反馈处理数据和UI
2、我们开启了一个Adapder类,但是在item里的操作需要刷新界面,这个时候我们通常是在Adapter执行监听操作,在主界面的UI类里刷新界面,怎样传递这个信息?
3、我们经常会开启一个类似dialog, PopupWindow等控件之后,里面的操作需要我们刷新主界面
4、开启倒计时
面对这些情况,我们都可以用Handler机制来异步处理
1、网络访问
public class MainActivity
extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main_activity);
}
private void TestMethod(){
//TODO 一般在这里开启一个进度条
new Thread() {
public void run() {
try {
//TODO 这里添加一个网络访问操作
Message msg = new Message();
msg.obj = result;
msg.what = 3;
handler.sendMessage(msg);
} catch (IOException e) {
//TODO 这里需要关闭一下进度条
e.printStackTrace();
}
};
}.start();
}
//new一个处理会掉信息的Handler
Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
//TODO Something
break;
}
}
};
}
2、Adapter,dialog,PopuWindow等回调数据
从主类中new一个Handler的回调处理,并传入Handler
Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0: // 返回编辑
//TODO 在这里执行返回后需要的操作
}
}
};
ReEditDialog dialog = new ReEditDialog(this,handler);//传入handler
dialog.show();
在Adapter,dialog,PopuWindow等中发送消息
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
3、开启倒计时
Handler verifyTimeOutHandler = new Handler();
private int verifyMobileTimeOut=30;
private int
timeOutIndex=verifyMobileTimeOut;
private Runnable verifyTimeOutThread = new Runnable() {
public void run() {
if(timeOutIndex>0){
bt_get_verrifycode.setText(timeOutIndex+"秒后重试");
bt_get_verrifycode.setTextColor(Color.WHITE);
timeOutIndex--;
verifyTimeOutHandler.postDelayed(this,1000);//参数是Runnable和延迟时间
}else{
timeOutIndex=verifyMobileTimeOut;
verifyEnable();
}
}
};
//某个方法里面开启发送
verifyTimeOutHandler.post(verifyTimeOutThread);
总结:一般使用Handler主要就是注意两个地方:一是new一个handler处理接收的回调数据,二是用handler发送消息
//第一步:new一个handler处理接收的回调数据
Handler handler = new Handler() {
public void handleMessage(Message msg) {
<span style="white-space:pre">
</span>switch (msg.what) {
case 0: // 返回编辑
//TODO 在这里执行返回后需要的操作
}
}
};
//第二步:<span style="white-space:pre">用handler发送消息
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
最后
以上就是优雅百合为你收集整理的Android_Handler实现异步回调加载数据的全部内容,希望文章能够帮你解决Android_Handler实现异步回调加载数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复