阅读更多

Activity:运行于主线程。因Android的GUI是非线程安全的,所有界面相关操作必须在主线程中完成,又因为即时响应的需要,主线程中不能进行耗时长的操作,如果有些操作既耗时又需要操作界面,就用消息机制吧。开子线程处理耗时操作,需要操作界面时给主线程发消息,把界面操作限制在主线程中。好在Android的消息机制还是相当方便的。

Service:服务本体运行于主线程,但响应函数(就是onBind返回的对象的接口啦)就复杂了。如果跟客户在同一个进程的话,就直接在客户的线程中运行,否则就从服务所在进程维护的线程池里取出一个线程来运行,如果同时有多个进程请求服务的话,就同时产生多个线程来响应。所以,想要提供给别人使用的服务必须做成线程安全的,否则就不要提供第三方使用的接口好啦,免得别人自做多情。

Content provider:跟服务相似。不过数据提供者的响应函数是固定的:query(), insert(), delete(), update(), and getType()。数据库应该是安全的,自己做的就要加倍小心啦。

Broadcast receiver:运行于主线程。它就一个方法,运行时跟当前Activity一样,优先级超高,是不能被杀死的,但方法一返回,就打入冷宫,随时可能被害,即便它运行时派生了子线程也不能母凭子贵,母子双双被害,更是人间惨剧。所以receiver中通常启动服务来做耗时的后台操作,启动Activity或任务栏通知来做界面响应。

更多相关文章

  1. Android:Thread & Handler 线程 消息循环
  2. 阿里Android开发规范:进程、线程与消息通信
  3. Android中的线程池与任务队列
  4. Android下的多线程
  5. Android数据库事务操作
  6. Android 是Google开发的基于Linux平台的开源手机操作系统
  7. Android Training - 网络操作(3) - 解析XML数据
  8. Handler解析(一):是如何实现线程之间的切换

随机推荐

  1. 注册中心 Eureka 源码解析 —— 应用实例
  2. 注册中心 Eureka 源码解析 —— 注册表 I
  3. Android(安卓)官方架构组件 ViewModel :
  4. 数据库中间件 MyCAT 源码分析 —— 调试
  5. Python PK C++,初学者该如何挑选?
  6. REPMGR高可用+VIP方案
  7. 注册中心 Eureka 源码解析 —— 应用实例
  8. Android学习笔记(十七)数据保存
  9. Spring Boot工程集成全局唯一ID生成器 Ui
  10. 注册中心 Eureka 源码解析 —— 应用实例