时间:2014-01-30 来源:

android开发教程之handle实现多线程和异步处理

这次浅谈一下Handler,为什么会出现Handler这个功能特性呢?首先,网页外包接活在之前的基本控件,网页切图价格基本都是在Activity的onCreate(Bundle savedInstanceState)方法中调用和处理的,div+css制作但是,div+css报价在有些情况,兼职手机网页制作比如在网络上下载软件等一些需要等待响应时间比较长的操作,html静态页面制作如果同样放在Activity的该方法中的话,web切图报价那么在执行该方法的时候,psd转html整个Activity是不可动的,html切图制作用户只能干等着网页外包接活,这样的用户体验是十分差的,网页外包接活这种处理方式带来的最好结果是等待了一段时间后web前端制作,得到了想要的结果,web前端制作不好的情况就是等了N久承接网页制作,也没有出现结果,div前端切图有的甚至会使Activity报错web切图报价,为了避免这些情况的发生,web切图报价所以引入了Handler的特性符合w3c标准,他就像是一个线程队列,符合w3c标准它也是一种异步的消息处理.首先我们先看一个例子网页外包接活,通过例子来对Handler进行认识.布局文件中是两个按钮,jpg或psd转html分别是start和stop,分别控制线程的开始和停止. 复制代码 代码如下:<Button      android:id="@+id/start"     android:layout_height="wrap_content"     android:layout_width="fill_parent"     android:text="@string/start" /> <Button      android:id="@+id/stop"     android:layout_height="wrap_content"     android:layout_width="fill_parent"     android:text="@string/stop" />

我们可以看到,web前端制作在Activity中对两个按钮分别绑定了事件监听器承接网页制作,还创建了Handler的一个实例,兼职手机网页制作以及创建了一个匿名内部类web切图报价,是一个实现Runnable接口的线程HandlerThread.当start按钮按下时,网站div+css即会执行handler.post(HandlerThread);这一句代码符合w3c标准,之前说过,符合w3c标准Handler用一个线程队列网页外包接活,这句代码即是把HandlerThread这个线程加入了handler的线程队列中,网页外包接活因为加入的这个HandlerThread是第一个线程web前端制作,因此它会马上执行它的run()方法.在run()方法中,div+css制作handler.postDelayed(HandlerThread, 3000);又再一次将HandlerThread放入handler的线程队列中,兼职手机网页制作这里设置了3000ms的延迟.这样web切图报价,整个程序会不断地运行,web切图报价且每隔3000ms在LogCat中打印出"HandlerThread is Running......".但是符合w3c标准,值得注意的是,html切图制作不要以为现在handler的出现网页外包接活,使得这些打印操作所在的线程和主线程分开了,网页外包接活其实不然web前端制作,这里根本没有两个线程在跑,web前端制作这些打印出来的内容承接网页制作,也是主线程跑出来的.我们可以做个试验,div前端切图在onCreate函数之后以及打印语句的地方把当前的Thread的名字通过Thread.currentThread.getName()打印出来web切图报价,可以看到,web切图报价都是相同的符合w3c标准,这就意味着都是主线程跑出来的.我们知道一个线程的启动需要start()方法网页外包接活,而是直接调用了run()方法了.所以只是main线程在跑就不足为奇了.从上面的例子来看web前端制作,这个Handler如果这样用的话,web前端制作并不是我们想要的效果承接网页制作,因为它没有实现异步,兼职手机网页制作还是在一个主线程中运行.因此web切图报价,我们必须换一种方式来使用Handler.要实现Handler的异步多线程,网站div+css就需要了解另两个类符合w3c标准,一个是Message类,符合w3c标准另一个是Looper类.每个Handler对象中都有一个消息队列网页外包接活,队列中就是存放的Message对象,网页外包接活可以使用obtainMessage()来获得消息对象.同时web前端制作,Message对象是用来传递使用的,div+css制作它能传递两个整型和一个Object,尽量使用Message的arg1与arg2两个整型来传递参数,兼职手机网页制作那样系统消耗最小(API如是说),如果传递数据量比较大,web切图报价则可以使用setData(Bundle a)的方法符合w3c标准,其中的Bundle对象可以粗略的看成是一个Map对象,html切图制作但它的Key都是String,而value是有限的一些类型,网页外包接活可以再API里查看.Looper类有能够循环地从消息队列中取得消息的功能web前端制作,这样承接网页制作,该线程就可以循环的在消息队列里取得消息,div前端切图知道消息队列为空为止.但我们一般不直接创建和使用Looper,在Android提供的HandlerThread类中,web切图报价就实现了Looper的功能符合w3c标准,所以我们只要使用HandlerThread这个类就可以了,符合w3c标准我们用HandlerThread的对象调用getLooper()来得到该线程的Looper对象.我们来看下面这个例子 复制代码 代码如下:import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; public class HandlerDemo2Activity extends Activity {     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         System.out.println("Activity---->"+Thread.currentThread().getName());         HandlerThread handlerThread = new HandlerThread("HandlerThread");//创建一个HandlerThread对象网页外包接活,它是一个线程         handlerThread.start();//启动线程         MyHandler myHandler = new MyHandler(handlerThread.getLooper());//创建一个MyHandler对象,jpg或psd转html该对象继承了Handler,从下面的MyHandler类中可以看到,web前端制作调用的是Handler父类的Handler(Looper looper)的构造函数承接网页制作,即myHandler,当myHandler接收到消息后,网站div+css就会调用其handleMessage的方法来处理消息     }     class MyHandler extends Handler{         public MyHandler() {//构造函数             // TODO Auto-generated constructor stub         }         public MyHandler(Looper looper){//构造函数             super(looper);//实现了父类的该构造函数         }         @Override         public void handleMessage(Message msg) {//当这个Handler接收到Message对象的时候符合w3c标准,会自动调用这个方法,符合w3c标准来对Message对象进行处理             // TODO Auto-generated method stub             System.out.println("Handler---->"+Thread.currentThread().getName());         }     } } 上面的代码在LogCat中System.out的执行结果为:Acitivity---->mainHandler---->HandlerThread这就说明了网页外包接活,结合Looper和Message,可以实现与主线程的分离,div+css制作从而可以实现多线程和异步处理.

在Activity中的代码如下:复制代码 代码如下:import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class HandlerDemo1Activity extends Activity {     Button startButton = null;     Button endButton = null;     Handler handler = new Handler();     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         startButton = (Button)findViewById(R.id.start);         startButton.setOnClickListener(new StartListener());         endButton = (Button)findViewById(R.id.end);         endButton.setOnClickListener(new EndListener());     }     class StartListener implements OnClickListener{         @Override         public void onClick(View arg0) {             // TODO Auto-generated method stub             handler.post(HandlerThread);         }     }     class EndListener implements OnClickListener{         @Override         public void onClick(View arg0) {             // TODO Auto-generated method stub             handler.removeCallbacks(HandlerThread);         }     }     Runnable HandlerThread = new Runnable() {         @Override         public void run() {             // TODO Auto-generated method stub             System.out.println("HandlerThread is Running......");             handler.postDelayed(HandlerThread, 3000);         }     }; }

点击次数:7320
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日如何用int3【综合】2015年05月25日android自定义对话框工具类 【编程语言】2014年11月26日和最大子序列---动态规划 【移动开发】2015年05月29日iOS:Xcode下载 【编程语言】2014年12月25日FIF互动帮助手册系列-HTML手册flash版2014年01月29日OC:可变字符串NSMutableString的一些用法【综合】2014年12月16日《用微信轻应用学习Axure7——第二讲:抽手纸(一)》2015年02月25日hdu5353Average(2015Multi-UniversityTrainingContest6) 【综合】2015年08月07日JAVA并发编程2_线程安全&内存模型 【架构设计】2015年05月18日Android5.0五大安全特性 【Web前端】2015年03月19日ErrorstartingstaticResources......【互联网】2015年03月10日HDU5323SOLVETHISINTERESTINGPROBLEM爆搜【综合】2015年07月30日如何测试移动端App 【架构设计】2015年01月07日Android:各种常用Layout的XML属性 【移动开发】2014年11月26日基于JQUERY的多级联动代码2014年01月29日常见算法问题的分类 【移动开发】2015年01月19日获取文本中你需要的字段的几个命令grepawkcuttrsed【编程语言】2015年06月26日高性能Ftp服务器FeiTP-server 1,收藏 ,,2016年06月23日structs2投影的介绍 【数据库】2014年12月11日巧用WPP制作课堂小测验2014年01月28日黑客领袖什么样?揭秘LulzSec领袖曾攻击CIA ,,2016年06月23日HDU5137HowManyMaosDoestheGuanxiWorth(最短路径) 【互联网】2015年01月19日可放在U盘并启动的微型Linux系统,PuppyLinux5.3"Wary","Racy" 1,收藏 ,,2016年06月23日年轻输得起,蓝桥杯明年我要拿国一 【综合】2015年04月17日Java知识点解析【编程语言】2015年07月20日POJ1122FDNYtotheRescue!反向dijkstra 【移动开发】2015年01月29日【剑指Offer面试题】九度OJ1518:反转链表 【Web前端】2015年08月04日Haproxy+mysqlcluster(MySQL集群)配置 【编程语言】2014年12月03日为什么选择Scala,它在大数据处理方面有何优势? 【编程语言】2015年06月01日《C++Primer》读书笔记--命名空间 【编程语言】2015年06月17日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)