在Android开发中我们常常用到Handler这个类去处理消息队列中的消息,以下这个例子实现的是利用Handler传递一个消息给线程,线程运行run()方法去更新进度条的进度,以下是源代码:

public class MainActivity extends Activity {private Button button;private Button button2;private Button button3;private ProgressBar progressBar;private int counter=1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d("BruceZhang", "mainActivity--->"+Thread.currentThread().getId());Log.d("BruceZhang", "mainActivity--->"+Thread.currentThread().getName());button=(Button)findViewById(R.id.button1);button2=(Button)findViewById(R.id.button2);button3=(Button)findViewById(R.id.button3);progressBar=(ProgressBar)findViewById(R.id.progressbar);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//handler.post(runnable);}});button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//handler.removeCallbacks(runnable);}});button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubif(counter==1){handler.post(runnable);}else if (counter==2) {progressBar.setVisibility(View.VISIBLE);progressBar.setProgress(0);}}});new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubLog.d("BruceZhang", "Thread--->"+Thread.currentThread().getId());Log.d("BruceZhang", "Thread--->"+Thread.currentThread().getName());}}).start();}/* Handler handler=new Handler();Runnable runnable=new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubLog.d("runnable", "update");handler.postDelayed(runnable, 2000);}};@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}*/@SuppressLint("HandlerLeak")Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);progressBar.setProgress(msg.arg1);handler.post(runnable);}};Runnable runnable=new Runnable() {int i=0;@Overridepublic void run() {Log.d("BruceZhang", Thread.currentThread().getId()+"");Log.d("BruceZhang", Thread.currentThread().getName());// TODO Auto-generated method stubi+=10;Message message=handler.obtainMessage();message.arg1=i;try {Thread.sleep(1000);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}handler.sendMessage(message);if(i>=progressBar.getMax()){handler.removeCallbacks(runnable);progressBar.setVisibility(View.GONE);counter+=1;}}};}

Android开发中的Handler和多线程相关推荐

  1. android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏

    android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...

  2. Android开发中的多线程编程技术

    Android开发中的多线程编程技术 [IT168技术]多线程这个令人生畏的"洪水猛兽",很多人谈起多线程都心存畏惧.在Android开发过程中,多线程真的很难吗?多线程程序的&q ...

  3. 5 个 Android 开发中比较常见的内存泄漏问题及解决办法

    Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...

  4. android如何避免内存泄露,Android开发中应该避免的内存泄露

    一.背景和目的: 目前许多开发人员在Android开发过程中,较少关注实现细节和内存使用,容易会造成内存泄露,导致程序OOM. 本文会通过代码向大家介绍在Android开发过程中常见的内存泄露. 二. ...

  5. android addview指定位置,Android开发中,请问当在一个视图中addView另一个布局视图时为什么报错?...

    Android开发中,我在一个视图中addView另一个布局视图(该视图通过inflate加载获得,其中root为null即没有附加parent视图),为什么还是会报错误: The specified ...

  6. android开发中遇到的问题汇总

    android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...

  7. Android开发中的WMS详细解析

    /   今日科技快讯   / 近日,小冰公司宣布对旗下人工智能数字员工产品线启动年度升级.本次升级加强的技术包括大模型对话引擎.3D神经网络渲染.超级自然语音及AIGC人工智能内容生成.小冰公司计划将 ...

  8. Android 开发中的日常积累

    Android 性能优化 Android性能优化视频,文档以及工具 胡凯-性能优化 Android最佳性能实践(1):合理管理内存 Android最佳性能实践(2):分析内存的使用情况 Android ...

  9. android 模拟输入,Android开发中如何模拟输入

    主要思路是使用 adb shell input指令来模拟按键及触摸输入. 但是前提是需要root,且华为手机出于安全考虑已经停止了root解码.所以测试建议换个别的手机.或是直接用as中的模拟器,用有 ...

最新文章

  1. ArcMap 通过DEM获取高程值
  2. easyui数据表格重置_Python办公自动化,自动更新表格,告别繁琐
  3. python cmd命令大全-详解python调用cmd命令三种方法
  4. You should rebuild using libgmp = 5 to avoid timing attack vulnerability.
  5. 在阿里云Kubernetes上运行SpringCloud示例PiggyMetrics
  6. java httpclient 重定向_用Apache HttpClient实现URL重定向
  7. 等待3月份的beta1
  8. mutiset HDOJ 5349 MZL's simple problem
  9. 如何将servlet中的变量在jsp页面中显示---jsp中的jstl表达式(C标签)
  10. 四边形不等式优化dp
  11. 基于先验LiDAR点云地图的单目VIO定位
  12. 【数据蒋堂】索引的本质是排序
  13. 文件磁盘相关函数[11]-获取指定文件的版本号 GetFileVersion
  14. 瑞友天翼服务器ip地址怎么修改,(瑞友天翼安装教程.doc
  15. Python 算法交易实验30 退而结网7-交易策略思考
  16. java毕业实习日志_java毕业实习日记.doc
  17. xtu oj 1355
  18. 【综合类型第 8 篇】陆游和唐婉的故事
  19. 中国咖啡机市场运行现状调研及投资战略分析报告2022-2027年
  20. 你的时间都去哪了?(三)时间利用情况分析报告(柳比歇夫时间统计法)

热门文章

  1. Ubuntu 16.04安装VMware-Workstation-12
  2. hibernate4连接mysql自动创建表之错误
  3. bash shell命令(1)
  4. 多进程的一些注意事项
  5. 认识OSSIM中的UUID
  6. PLSQL_解析过程及硬解析和软解析的区别(案例)
  7. php-fpm 参数及配置详解
  8. Windows Phone 设置DatePicker图标
  9. GridView强制换行与自动换行
  10. Ruby on Rails的下载及安装以及开发环境的搭建