Android开发中的Handler和多线程
在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和多线程相关推荐
- android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏
android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...
- Android开发中的多线程编程技术
Android开发中的多线程编程技术 [IT168技术]多线程这个令人生畏的"洪水猛兽",很多人谈起多线程都心存畏惧.在Android开发过程中,多线程真的很难吗?多线程程序的&q ...
- 5 个 Android 开发中比较常见的内存泄漏问题及解决办法
Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...
- android如何避免内存泄露,Android开发中应该避免的内存泄露
一.背景和目的: 目前许多开发人员在Android开发过程中,较少关注实现细节和内存使用,容易会造成内存泄露,导致程序OOM. 本文会通过代码向大家介绍在Android开发过程中常见的内存泄露. 二. ...
- android addview指定位置,Android开发中,请问当在一个视图中addView另一个布局视图时为什么报错?...
Android开发中,我在一个视图中addView另一个布局视图(该视图通过inflate加载获得,其中root为null即没有附加parent视图),为什么还是会报错误: The specified ...
- android开发中遇到的问题汇总
android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...
- Android开发中的WMS详细解析
/ 今日科技快讯 / 近日,小冰公司宣布对旗下人工智能数字员工产品线启动年度升级.本次升级加强的技术包括大模型对话引擎.3D神经网络渲染.超级自然语音及AIGC人工智能内容生成.小冰公司计划将 ...
- Android 开发中的日常积累
Android 性能优化 Android性能优化视频,文档以及工具 胡凯-性能优化 Android最佳性能实践(1):合理管理内存 Android最佳性能实践(2):分析内存的使用情况 Android ...
- android 模拟输入,Android开发中如何模拟输入
主要思路是使用 adb shell input指令来模拟按键及触摸输入. 但是前提是需要root,且华为手机出于安全考虑已经停止了root解码.所以测试建议换个别的手机.或是直接用as中的模拟器,用有 ...
最新文章
- ArcMap 通过DEM获取高程值
- easyui数据表格重置_Python办公自动化,自动更新表格,告别繁琐
- python cmd命令大全-详解python调用cmd命令三种方法
- You should rebuild using libgmp = 5 to avoid timing attack vulnerability.
- 在阿里云Kubernetes上运行SpringCloud示例PiggyMetrics
- java httpclient 重定向_用Apache HttpClient实现URL重定向
- 等待3月份的beta1
- mutiset HDOJ 5349 MZL's simple problem
- 如何将servlet中的变量在jsp页面中显示---jsp中的jstl表达式(C标签)
- 四边形不等式优化dp
- 基于先验LiDAR点云地图的单目VIO定位
- 【数据蒋堂】索引的本质是排序
- 文件磁盘相关函数[11]-获取指定文件的版本号 GetFileVersion
- 瑞友天翼服务器ip地址怎么修改,(瑞友天翼安装教程.doc
- Python 算法交易实验30 退而结网7-交易策略思考
- java毕业实习日志_java毕业实习日记.doc
- xtu oj 1355
- 【综合类型第 8 篇】陆游和唐婉的故事
- 中国咖啡机市场运行现状调研及投资战略分析报告2022-2027年
- 你的时间都去哪了?(三)时间利用情况分析报告(柳比歇夫时间统计法)