package com.example.handler;import android.os.Bundle;import android.app.Activity;import android.app.ProgressDialog;import android.content.res.Resources;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {        //声明变量    private Button b1;    private ProgressDialog pd;        //定义Handler对象    private Handler handler =new Handler(){        @Override        //当有消息发送出来的时候就执行Handler的这个方法        public void handleMessage(Message msg){            super.handleMessage(msg);            //只要执行到这里就关闭对话框            pd.dismiss();        }    };            /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);            Resources res=  this.getResources();        //查看UI组件所在的线程名        Log.i("tag", "onCreate()-->"+Thread.currentThread().getName());                //定义UI组件        b1= (Button)findViewById(R.id.Button01);        //给按钮绑定单击事件监听器        b1.setOnClickListener(new View.OnClickListener() {                        @Override            public void onClick(View v) {                //点击按钮后去处理长耗时操作                processThread();            }        });    }            private void processThread(){                //构建一个下载进度条        pd= ProgressDialog.show(MainActivity.this, "下载文件", "正在下载……");        Log.i("tag", "processThread()-->"+Thread.currentThread().getName());                new Thread(){                        @Override            public void run(){                Log.i("tag", "run()-->"+Thread.currentThread().getName());                //在新线程里执行长耗时方法                longTimeMethod();                //执行完毕后给handler发送一个空消息                handler.sendEmptyMessage(0);            }                    }.start();    }        //模拟下载文件的长耗时方法    private void longTimeMethod(){        try {            Log.i("tag", "longTimeMethod-->"+Thread.currentThread().getName());            Thread.sleep(10000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}



转自:http://android.yaohuiji.com/archives/770

更多相关文章

  1. Android/Bluetooth 初始化流程
  2. android studio mac_最新Mac安装Flutter全过程
  3. 解析ANDROID ps命令执行后各项参数的含义
  4. (原创)Android入门教程(六)之------使用android SDk帮助文档(英
  5. Flutter下载更新App的方法示例
  6. Android之AsyncTask异步任务详解总结
  7. Android之——多线程断点续传下载示例
  8. Android开发学习总结(一)——搭建最新版本的Android开发环境
  9. LTP(Linux Test Project) for Android的编译

随机推荐

  1. ProgressBar属性小结(转载)
  2. android 布局简括
  3. Android 异步加载图片
  4. Android中attr自定义属性详解
  5. android 注册、登录实现程序
  6. Failed to fetch URL https://dl-ssl.goo
  7. 2、Android应用程序基本特性
  8. android 7.0 ,6.0本地多语言切换失效
  9. 小技巧及总结
  10. Android简单注册表单