android GUI线程安全

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值