- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
進程和線程.ppt
Processes and Threads进程和线程 /guide/components/processes-and-threads.html#Processes 当一个应用程序组件运行时,同时该应用程序无在运行的组件,安卓系统将会为该程序分配一个单线程的进程,默认情况下,此应用程序的其他组件也将在该线程上运行(此时我们称其为主线程)。 如果应用程序组件运行时,组件所在的应用程序已分配进程和线程,该组件将在已存在进程和线程中运行。 当然你也可以安排你的组件运行在非默认的进程和线程中。 可以通过对配置文件中组件元素的android:process属性设置组件运行的进程名称。 当一个程序第一次启动时,Android会自动创建一个对应的主线程(Main Thread)。该线程非常重要,它负责把事件分派到相应的控件,用于用户与Android控件进行交互。所以通常又被叫做UI线程。 系统并不会为同一组件的不同示例创建单独的线程。同一进程下的所有组件都在UI线程中示例化,并可发出对系统其他组件的调用命令。因此,系统回调函数运行在该UI线程中。 当你的应用涉及比较多的于用户之间的交互,这种单线程的模式将导致不流畅的体验。特别地,如果所有的操作都在UI线程中处理,比如网络访问、数据读取,将会中断整个UI,致使不能响应任何事件。更糟糕的是,如果中断超过5秒钟,系统将提示“应用无响应”的对话框。用户将退出和卸载你的应用程序。 ?在开发Android应用时必须遵守单线程模型的原则:Android?UI操作并不是线程安全的并且这些操作必须在UI线程中执行。 1、不要阻塞UI线程;2、只能在主线程操作UI。 Handler以线程消息队列的形式发送和处理message和runnable对象。handler运行于创建其的线程并处理该线程的消息队列。当某个线程创建了一个handler对象,则该handler发送message和runnable到该线程下的消息队列,并处理他们当他们从消息队列中弹出来时。 Handler主要有2个用途:1、安排处理message和runable的计划;2、将一些操作安排在其他的线程中去执行。 用Handler实现异步处理功能 一.一个问题 有这样一个问题值得我们思考,若把一些类似于下载的功能(既耗时且不一定有结果)写在Activity(主线程)里,会导致Activity阻塞,长时间无响应,直至页面假死(如果5秒钟还没有完成的话,会收到Android系统的一个错误提示 强制关闭)。因此,我们需要把这些耗时的操作放在单独的子线程中操作。这就是Handler的使命。Handler提供异步处理的功能,发送和接收不是同时的(Activity的主线程和线程队列里的线程是不同的线程,并行进行,互不影响)。 用Handler实现异步处理功能 二.Handler简介 Handler 为Android操作系统中的线程通信工具,它主要由两个作用:(1)安排消息或Runnable 在某个主线程中某个地方执行(2)安排一个动作在另外的线程中执行。每个Handler对象维护两个队列(FIFO),消息队列和Runnable队列, 都是有Android操作系统提供的。Handler可以通过这两个队列来分别: 发送、接受、处理消息–消息队列; 启动、结束、休眠线程–Runnable队列; Handler的使用方法大体分为3个步骤:1.创建Handler对象。2.创建Runnable和消息。3.调用post以及sendMessage方法将Runnable和消息添加到队列。 * * *
原创力文档


文档评论(0)