Android中Handler Thread及Runnable之间的关系.docxVIP

Android中Handler Thread及Runnable之间的关系.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android 中 Handler Thread 及 Runnable 之间的关系 在多线程编程这块,我们经常要使用 Handler,Thread 和 Runnbale 这三个类,那么他们之间的关系你是否弄清楚了呢? 首先,说明 Android 的 CPU 分配的最小单元是线程,Handler 一般是在某个线程里创建的,因而 Handler 和 Thread 就是相互绑定的,一一对应。 而 Runnable 是一个接口,Thread 是 Runnbale 的子类。所以说,他俩都算是一个进程。HandlerThread 顾名思义就是可以处理消息循环的线程,他是一个拥有 Looper 的线程,可以处理消息循环。与其说 Handler 和一个线程绑定,不如说 Handler 是和 Looper 一一对应的。最后需要说明的是,在 UI 线程(主线程)中: mHandler=new Handler(); mHandler.post(new Runnable(){ void run(){ //执行代码... } }); 这个线程其实是在 UI 线程之内运行的,并没有新建线程。常见的新建线程的方法是: Thread thread = new Thread(); thread.start(); HandlerThread thread = new HandlerThread(string); thread.start(); -Handler 的定义: 主要接受子线程发送的数据,并用此数据配合主线程更新 UI。 解释:当 Android 应用程序启动时,Android 首先会开启一个主线程(也就是 UI 线程),主线程管理界面中的 UI 控件,负责事件分发,比如说,你要是点击一个 Button ,Android 会分发事件到 Button 上,来响应你的操作。如果此时需要一个耗时的操作,例如:联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果 5 秒钟还没 有完成的话,,会收到 Android 系统的一个错误提 示 强制关闭。这个时候我们需要把这些耗时的操作,放在一个子线程中 ,因为子线程涉及到UI 更新, 二 Handler 一 些 特 点 handler 可以分发 Message 对象和 Runnable 对象到主线程中,每个 Handler 实例,都会绑定到 创 建 他 的 线 程 中 ( 一 般 是 位 于 主 线 程 ), 它有两个作用: :安排消息或 Runnable 在某个主线程中某个地方执行; :安排一个动作在不同的线程中执行 Handler 中 分 发 消 息 的 一 些 方 法 post(Runnable) postAtTime(Runnable,long) postDelayed(Runnable long) sendEmptyMessage(int) sendMessage(Message) sendMessageAtTime(Message,long) sendMessageDelayed(Message,long) 以 上 post 类 方 法 允 许 你 排 列 一 个 Runnable 对 象 到 主 线 程 队 列 中 , sendMessage 类方法,允许你安排一个带数据的 Message 对象到队列中,等待更新. 三 Handler 实 例 (1) 子类需要继承 Handler 类,并重写 handleMessage(Message msg) 方法,用于接受线程数据; 以下为一个实例, 它实现的功能为: 通过线程修改界面 Button 的内容public class MyHandlerActivity extends Activity { Button button; MyHandler myHandler; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.handlertest); button = (Button) findViewById(R.id.button); myHandler = new MyHandler(); // 当创建一个新的 Handler 实例时, 它会绑定到当前线程和消息的队列中,开始分发数据 // Handler 有两个作用:(1) : 定时执行 Message 和 Runnalbe 对象; // (2): 让一个动作,在不同的线程中执行. // 它安排消息,用以下方法: // post(Runnable); //

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档