首先Handler是在主线程中定义的,然后在线程中可用使用这个Handler的变量来更新UI操作。也就是说,progressBar.setVisibility(View.VISIBLE);在点击的时候设置,然后是网络请求,网络请求是耗时操作,所以放在子线程中,这样不会阻塞主线程。但是子线程不能更新主线程的UI操作,所以有了Handler来帮忙。也就是说Handler在子线程里面调用,来通知主线程的UI更新操作。
解决方案 »
- Android游戏开发视频分享
- 求助,怎么才能让超出屏幕的部分显示出来
- HttpPost传入参数的疑问
- 【NDK开发疑惑,求解!】Loadlibrary失败
- 每个应用程序的package都不能重复?
- 使用了WebView,为什么还会被其它程序拦截URL
- ContentObserver 判断是 insert 还是delete 还是update 触发OnChange() 大家有什么办法吗
- 新手求助,android TCPClient 收到数据部分乱码,谁知道怎么回事啊?救急~~
- camera preview闪烁问题
- 怎么编写一个串口安卓APP,求大腿
- 关于phonegap调用已有数据库问题。
- Android启动画面后台加载webview的问题!!!
private ProgressDialog pd;
/**
* 设置进度框
*/
private void setProgressDialog(String str) {
pd = new ProgressDialog(ConfirmActivity.this);
pd.setMessage(str);
// 设置对话框能用"取消"按钮关闭
pd.setCancelable(false);
// 设置对话框显示样式
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// 设置对话框的进度条显示
pd.setIndeterminate(true);
pd.show();
}取回数据后,在Handler中再释放掉进度框
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what==0x123)
{
pd.dismiss();
}
}};