Handler post()等在子线程中更新主线程的UI的方法使用小汇
来源:互联网 发布:大数据在电商中的应用 编辑:程序博客网 时间:2024/04/30 22:04
一直没怎么使用过 handler.post()看到很多地方别人都用到,所以漏出两段代码来练练手
/**
* 总结View.post(),handler.post()方法:有在子线程中更新主线程的UI需求就可以调用handler.post方法来更新
* @author Administrator
*
*/
private Button bt;
private Button bt2;
private Button bt3;
/**
* 主线程的handler
*/
Handler handler=new Handler();
private View bg;
private Button bt4;
private Button bt5;
private Button btReset;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setViews();
}
private void setViews() {
bt= (Button) findViewById(R.id.bt);
bt2= (Button) findViewById(R.id.bt2);
bt3= (Button) findViewById(R.id.bt3);
bt4= (Button) findViewById(R.id.bt4);
bt5= (Button) findViewById(R.id.bt5);
btReset= (Button) findViewById(R.id.btReset);
bg=findViewById(R.id.bg);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
bt.post(new Runnable() {
@Override
public void run() {
Random random=new Random();
int num=random.nextInt(1000);
bt.setText(""+num);
}
});
}
});
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new Thread(){
public void run() {
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
bt2.post(new Runnable() {
@Override
public void run() {
Random random=new Random();
int num=random.nextInt(1000);
bt2.setText(""+num);
if (num%4==0) {
bg.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_bright));
}else if (num%4==1) {
bg.setBackgroundColor(getResources().getColor(android.R.color.holo_orange_light));
}else if (num%4==2) {
bg.setBackgroundColor(getResources().getColor(android.R.color.holo_green_dark));
}else if (num%4==3) {
bg.setBackgroundColor(getResources().getColor(android.R.color.holo_red_dark));
}
}
});
};
}.start();
}
});
bt3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.post(new Runnable() {
@Override
public void run() {
Random random=new Random();
int num=random.nextInt(100000);
bt3.setText(""+num);
}
});
}
}).start();
}
});
bt4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
bt.postDelayed(new Runnable() {
@Override
public void run() {
bt4.setText("2秒后");
}
}, 2000);
}
});
bt5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new Thread(){
public void run() {
try {
Thread.sleep(2000);
runOnUiThread(new Runnable() {
@Override
public void run() {
bt5.setText("已更新");
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
};
}.start();
}
});
//重置所有按钮
btReset.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
bt.setText("等同setText()");
bt2.setText("等待2秒后更新UI");
bt3.setText("在子线程中使用Handler.post()更新UI");
bt4.setText("在子线程中使用View.post()更新UI");
bt5.setText("在子线程中使用runOnUiThread等待2秒后更新UI");
bg.setBackgroundColor(getResources().getColor(android.R.color.white));
}
});
}
}
原来View.post()与Handler.post()更新UI如此之方便
希望与更多的朋友一起交流android技术相互提高 交流 群:220282789 谢谢!
源码下载
http://download.csdn.net/detail/u013042707/9186843
0 0
- Handler post()等在子线程中更新主线程的UI的方法使用小汇
- 在子线程中利用主线程的Handler的post()方法
- Android子线程更新UI主线程方法之Handler
- Android子线程更新UI主线程方法之Handler
- Android中在主线程与在子线程中更新UI的探索
- 在分线程更新主线程的Ui界面方法
- c#中后台线程更新主线程ui的方法
- Android 在子线程中更新主线程UI
- Android 在子线程中更新UI的方式,使用handler
- 在异步线程中使用主线程的handler
- Android Handler.post 难道真的可以在子线程更新UI???
- 子线程用Handler通知主线程更新UI
- 使用Handler在子线程中更新UI
- 使用Handler在子线程中更新UI
- 使用Handler在子线程中更新UI
- 使用Handler在子线程中更新UI
- 使用Handler在子线程中更新UI
- 学习在新线程中使用Handler更新UI的方法
- 性能调优工具:JDK 命令行工具之jstatd
- fushionchart的Pie3D的具体使用方法
- java通过JDBC驱动连接操作hive实例
- 对Pedestrian Detection aided by Deep Learning Semantic Tasks的小结
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
- Handler post()等在子线程中更新主线程的UI的方法使用小汇
- Ruby正则表达式
- spring 手动控制事务处理
- 利用类目扩充类目方法,以及延展实现
- 封装
- [Cool Node.js] 题记
- codeforces#326-B-Duff in Love-暴力
- Nutch2.3 + Mysql(错误解决方案)
- 5.访问web元素[2],IOC(控制反转)设计--只用这种-记住即可