网站大量收购独家精品文档,联系QQ:2885784924

物联网培训-04_Android_核心组件.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

*核心组件具体应用--Service特点:Service是一段没有用户界面,在后台运行的程序。Service可以运行在它自己的进程,也可以运行在其他应用程序的上下文context里面,这取决于自身的需要。其他的组件可以绑定到一个服务Service上面,通过远程过程调用(RPC)来调用这个方法例:从播放列表中播放歌曲的媒体播放器*核心组件具体应用--Service服务应用:可使用Context.startService()来启动一个Service,从而在后台运行程序。系统将保持这个Service,直到运行结束。调用Context.stoptService()结束,或者Service调用stopSelf()停止。startService()可以传递参数给Service。通过使用Context.bindService()方法,连接到一个Service上(如果这个service还没有运行将启动它)。调用Context.unbindService()结束。当连接到一个Service之后,我们还可以通过Service提供的接口与它进行通讯。通过ServiceConnection访问Service。二者可以混合使用,比如先startServece()再unbindService()。*Android应用开发--大纲Android核心组件介绍核心组件具体应用Android线程间的通信*Android线程间的通信线程间的通信概述每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread)主线程负责处理和UI相关的事件,因此主线程通常又叫UI线程而由于Android采用UI单线程模型,所以只能在主线程中对UI元素进行操作。如果在非UI线程直接对UI进行了操作,则会报错:CalledFromWrongThreadException:onlytheoriginalthreadthatcreatedaviewhierarchycantouchitsviews*Android线程间的通信Android为我们提供了消息循环的机制,我们可以利用这个机制来实现线程间的通信。这样我们就可以在非UI线程发送消息到UI线程,最终让UI线程来进行UI的操作对于运算量较大的操作和IO操作,我们需要新开线程来处理这些繁重的工作,以免阻塞UI线程Android消息循环的机制主要通过以下两种方式通过Thread+Handler实现通过AsyncTask实现*Android线程间的通信Thread+Handler实现?Handler为Android操作系统中的线程通信工具,包为android.os.Handler定义一个Handler对象要绑定到一个线程的消息循环队列,然后就可以进行消息的收发UI线程在创建的时候就建立了消息循环(在ActivityThread的publicstaticfinalvoidmain(String[]args)方法中实现),因此我们可以在其他线程通过handler给UI线程的handler发送消息,达到更新UI的目的。*Android线程间的通信Hanlder使用方法:new?Handler() 会将此handler绑定到当前线程消息循环队列newHandler(Looperlooper) 绑定到指定的消息循环队列sendMessage(Messagemsg) 用来发送消息handleMessage?(Message?msg) 重写Hanlder类中的此方法来处理收到的消息*Android线程间的通信Handler发送的消息MessageMessage是线程之间传递信息的载体包含了对消息的描述和任意的数据对象Message中包含了两个额外的int字段和一个object字段,这样在大部分情况下,使用者就不需要再做内存分配工作了。虽然Message的构造函数是public的,但是最好是使用Message.obtain()或Handler.obtainMessage()函数来获取Message对象,因为Message的实现中包含了回收再利用的机制,可以提供效率。*Android线程间的通信自定义线程中的消息循环线程本身是没有消息循环,使用的话需要手动启动,步骤如下:Looper.prepare(); 初始化当前线程的Looper??Looper.loop(); 启动消息循环Looper是用来封装消息循环和消息队列的类注:以上方法在需要创建消息循环的线程中执行*

文档评论(0)

yzs890305 + 关注
实名认证
内容提供者

计算机二级持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年11月02日上传了计算机二级

1亿VIP精品文档

相关文档