您的位置:首页 > 移动开发 > Android开发

Android的进程线程

2015-11-22 16:33 260 查看
当一个应用程序启动时,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对象,会自己执行。

         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: