使用Handler控制进度条,完成开始、暂停、继续、停止操作
来源:互联网 发布:python 查看硬盘分区表 编辑:程序博客网 时间:2024/05/21 10:41
使用Handler的removeCallbacks(Runnable)可以停止线程的运行,并且使用Handler的removeMessage(0)方法,如果要开始或继续运行,则使用handler的post(Runnable)方法,如果暂停,则只使用removeCallbacks()方法即可。
public class HandlerActivity extends Activity {Button button = null; // 未指明访问权限,默认为default.权限由大到小:Button button2;Button button3;Button button4;ProgressBar progressbar=null;MHandler mHandler;int i;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_handler);button = (Button) findViewById(R.id.button1);button2 = (Button) findViewById(R.id.button2);button3 = (Button) findViewById(R.id.button3);button4 = (Button) findViewById(R.id.button4);button2.setOnClickListener(myClick);button3.setOnClickListener(myClick);button4.setOnClickListener(myClick);progressbar=(ProgressBar) this.findViewById(R.id.progressbar); mHandler=new MHandler();//以下5句不需单击即可运行Thread,是通过Handler的POST方法启动的/* Message ms=new Message(); ms.what=120; mHandler.sendMessage(ms); Message msg=mHandler.obtainMessage();//获取数据 Log.d("obtain",msg.what+""); */ button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { i=0; button.setText("开始"); new Thread(ra).start(); //启动 //mHandler.post(ra); } });}OnClickListener myClick=new OnClickListener(){@Overridepublic void onClick(View v) {switch(v.getId()){ case R.id.button2:// 暂停 mHandler.removeCallbacks(ra);; break; case R.id.button3: //继续mHandler.post(ra);//继续运行break; case R.id.button4: //停止 mHandler.removeMessages(0);//清除原数据 mHandler.removeCallbacks(ra); //Thread.currentThread().interrupt();break;}}};Runnable ra = new Runnable() {@Overridepublic void run() {//Message ms = mHandler.obtainMessage();//此句也可以Message ms=new Message();try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} i+=20;ms.what = i; // 其值为int型,传递int值Log.d("哈哈",ms.what+"");HandlerActivity.this.mHandler.sendMessage(ms);//mHandler.sendMessage(ms);//也可以}};class MHandler extends Handler {// 必须重写此方法@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);//int ms = msg.what; // 接收数据并更新UIHandlerActivity.this.button.append(msg.what + ",");HandlerActivity.this.progressbar.setProgress(msg.what);if(msg.what>=100){//如果当i的值为100时将当前线程从handler中移除 mHandler.removeCallbacks(ra); return;}mHandler.post(ra); //启动线程}}}
0 0
- 使用Handler控制进度条,完成开始、暂停、继续、停止操作
- Handler和ProgressBar实现进度条的开始,暂停,停止,后退和循环
- Handler和ProgressBar实现进度条的开始,暂停,停止,后退和循环
- [POSIX线程模型]_[使用pthread对工作线程进行简单控制-暂停-继续-停止]
- MFC 多线程拷贝文件开始暂停停止和进度条
- WPF控制动画开始、停止、暂停和恢复
- WPF控制动画开始、停止、暂停和恢复
- Handler和ProgressBar实现开始停止循环进度条
- VS2008下VLC播放器,实现播放、暂停、停止、快进、截图、进度条显示、进度条控制功能
- 开始 继续 停止
- android开发——分秒计时器(可 开始/暂停/继续/停止)
- android Thread 停止 开始 暂停
- C#按钮事件中有循环,用另一个按钮控制停止,暂停,继续程序执行
- [并发并行]_[pthread]_[对工作线程进行简单控制-暂停-继续-停止]
- 进度条的暂停和开始
- Windows服务之启动、停止、暂停、继续
- NSTimer 暂停 继续 停止 的方法
- Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例
- 指纹模块,用于智能门锁、智能家居、门禁、工控设备等
- 机器学习资料与攻略超强整理吐血推荐(二)
- 理解AccessibilityService
- JNDI(Tomcat中的资源池)配置简介
- linux下 tomact的8080端口别占用了,解决办法
- 使用Handler控制进度条,完成开始、暂停、继续、停止操作
- JDK 1.7 java.io 源码学习之InputStream和OutputStream
- Codeblocks: 在工作空间中添加多个工程
- 决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结
- PLSQL Bulk Bind (FETCH BULK COLLECT INTO)
- 一个管道转角Mesh的实现方法
- Java如何读取和操作上G文本
- Android开发环境搭建
- 需要两个ssh key