Android的进程线程

当一个应用程序启动时,Android 会启动一个Linux进程和一个主线程。 

Android中所有的组件都在指定的进程的主线程进行实例化,对于系统的响应方法也都是在这个主线程中响应的。所以在系统调用时间较长的操作时,不应放到主线程中进行处理,应该在本进程中新建一个线程进行处理。

单线程模型:

当一个应用程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主要负责处理与UI有关的事件,并把相关事件分发到对应的组件中进行处理。所以主线程通常被叫做为UI线程。

 

在Android开发时,必须遵循单线程模型:UI的操作不是线程安全的,所以对于UI的操作必须放到主线程中进行操作。 

如果幕后的线程来执行UI对象,Android就会发出错误讯息 CalledFromWrongThreadException

 


Message Queue 和Handler的关系:

 


Message消息:(线程见通信的媒介) 

Handler 处理者:(线程消息的处理者)

         Handler用来负责消息Message的发送,以及在响应MessageQueue的消息处理。

使用Handler,需要implement 该类的 handleMessage(Message) 方法,它是处理这些Message的操作内容 

Message Queue消息队列:

用来处理Handler发送的Message信息,按照先进先出执行。


每一个线程都有自己的MessageQueue和自己管理线程的Looper

Handle的作用是将Message放入到特定线程的MessageQueue中进行处理

 

Handler会向MessageQueue以两种方式发送消息:sendMessage 和post

这两种消息都会插在MessageQueue的队尾并按照先进先出进行执行。

区别:

SendMessage发送的是一个message对象,会被handler的handleMessage的函数进行处理。

Post发送的是一个runnable对象,会自己执行。

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值