android开发中如何实现线程通信
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍了android开发中如何实现线程通信,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1,通过Handler机制主线程中
千家信息网最后更新 2024年09月22日android开发中如何实现线程通信1,通过Handler机制
3,View.post(Runnable r) 、
4,AsyncTask
这篇文章主要介绍了android开发中如何实现线程通信,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
1,通过Handler机制
主线程中定义Handler,子线程发消息,通知Handler完成UI更新,Handler对象必须定义在主线程中,如果是多个类直接互相调用,就不是很方便,需要传递content对象或通过接口调用。 另外Handler机制与Activity生命周期不一致的原因,容易导致内存泄漏,不推荐使用。
private void one() { handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 123: tv.setText(""+msg.obj); break; } } }; new Thread(){ @Override public void run() { super.run(); for (int i=0;i<3;i++){ try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } Message message=new Message(); message.what=123; message.obj="通过Handler机制"; handler.sendMessage(message); } }.run(); }
2,runOnUiThread方法
private void two(){ new Thread(){ @Override public void run() { super.run(); for (int i=0;i<3;i++){ try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } runOnUiThread(new Runnable() { @Override public void run() { tv.setText("通过runOnUiThread方法"); } }); } }.run(); }
用Activity对象的runOnUiThread方法更新,在子线程中通过runOnUiThread()方法更新UI,强烈推荐使用。
3,View.post(Runnable r) 、
private void three(){ new Thread(){ @Override public void run() { super.run(); for (int i=0;i<3;i++){ try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } tv.post(new Runnable() { @Override public void run() { tv.setText("通过View.post(Runnable r) 方法"); } }); } }.run(); }
这种方法更简单,但需要传递要更新的View过去,推荐使用
4,AsyncTask
private void four(){ new MyAsyncTask().execute("通过AsyncTask方法"); }private class MyAsyncTask extends AsyncTask{ @Override protected Object doInBackground(Object[] objects) { for (int i=0;i<3;i++){ try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } return objects[0].toString(); } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); tv.setText(o.toString()); } }
感谢你能够认真阅读完这篇文章,希望小编分享的"android开发中如何实现线程通信"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
方法
线程
篇文章
更新
对象
机制
推荐
开发
通信
一致
价值
兴趣
内存
原因
同时
周期
多个
接口
更多
朋友
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
四川省软件开发公司
江苏idc服务器供应商
西城区现代软件开发报价
上海睿渠网络技术网站
彩虹云服务器源码
数据库漏洞怎么修复
ibm网络安全论述
数据库设计过程的第三个阶段
济南市传承网络技术有限公司
云南电信dns服务器云主机
当下的网络安全形势
数据库代码知识点
网络安全在身边二维码你扫对了吗
戴尔服务器ec0031错误代码
紧跟网络安全和信息化方案
坪山区网络技术进出口
无法访问后台服务器
网络安全专业就业方向
oa软件开发认可和丰软件
华三嵌入式软件开发流程
spss怎么拆分数据库
路由器连接不上服务器zol问答
杭州安卓软件开发哪个品牌好
云顶手游福星在哪个服务器
清除指定表空间数据库
网络安全防护技能培训课程
我的世界网易服务器怎么管理
防城港电视台网络安全广告
南宁个人软件开发者
网络安全法五方面主要内容