前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安卓Handler消息机制的例子

安卓Handler消息机制的例子

作者头像
SmileNicky
发布2019-01-17 14:40:06
6780
发布2019-01-17 14:40:06
举报
文章被收录于专栏:Nicky's blogNicky's blogNicky's blog

package com.lab.activity; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class ProgressDialogTest extends Activity {  // 该程序模拟填充长度为100的数组  private int[] data = new int[100];  int hasData = 0;  // 定义进度对话框的标识  final int PROGRESS_DIALOG = 0x112;  // 记录进度对话框的完成百分比  int progressStatus = 0;  ProgressDialog pd;  // 定义一个负责更新的进度的Handler  Handler handler;  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   Button execBn = (Button) findViewById(R.id.exec);   execBn.setOnClickListener(new OnClickListener() {    public void onClick(View source) {     showDialog(PROGRESS_DIALOG);    }   });   //Handler消息处理   handler = new Handler(){    public void handleMessage(Message msg) {     if(msg.what == PROGRESS_DIALOG){      pd.setProgress(progressStatus);     }    };   };

 }  @Override  public Dialog onCreateDialog(int id, Bundle status) {   System.out.println("create");   switch (id) {   case PROGRESS_DIALOG:    // 创建进度对话框    pd = new ProgressDialog(this);    pd.setMax(100);    // 设置对话框的标题    pd.setTitle("任务完成百分比");    // 设置对话框 显示的内容    pd.setMessage("耗时任务的完成百分比");    // 设置对话框不能用“取消”按钮关闭    pd.setCancelable(false);    // 设置对话框的进度条风格    pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);    // 设置对话框的进度条是否显示进度    pd.setIndeterminate(false);    break;   }   return pd;  }  // 该方法将在onCreateDialog方法调用之后被回调  @Override  public void onPrepareDialog(int id, Dialog dialog) {   System.out.println("prepare");   super.onPrepareDialog(id, dialog);   switch (id) {   case PROGRESS_DIALOG:    // 对话框进度清零    pd.incrementProgressBy(-pd.getProgress());    new Thread() {     public void run() {      while (progressStatus < 100) {       // 获取耗时操作的完成百分比       progressStatus = doWork();       // 发送消息到Handler       Message message = handler.obtainMessage();       message.what = PROGRESS_DIALOG;       handler.sendMessage(message);      }      // 如果任务已经完成      if (progressStatus >= 100) {       // 关闭对话框       pd.dismiss();      }     }    }.start();    break;   }  }  // 模拟一个耗时的操作。  public int doWork() {   // 为数组元素赋值   data[hasData++] = (int) (Math.random() * 100);   try {    Thread.sleep(100);   } catch (InterruptedException e) {    e.printStackTrace();   }   return hasData;  } }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年10月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档