Android service与thread的选择

android SDK:

service运行在宿主进程中的主线程中(即UI线程),不创建自己的线程,不运行在一个单独的进程中(除非你专门指定)。

因此,如果你的service要做的工作很占CPU或者会有阻塞(例如mp3播放、网络任务),最好在service中创建一个新的thread来做这些工作,这样主线程能够专注于activity的用户交互,从而减少ANR(程序无响应)异常的发生。


 到底该用service还是用thread?

如果任务只在应用程序与用户有交互的情况下产生,并且任务很占时间或者会引起阻塞,则另起thread或者HandlerThread。

如果在应用程序与用户无交互的情况下仍需处理任务,那么用service,因为service是在后台运行的,同时仍要注意是否需要在service中另开thread。

Context.startService()方式启动的service会先后调用onCreate()、onStart()方法,这种方式启动的service不会与调用者有任何关系,即使调用者退出了,service仍然继续运行。

Context.bindService()方式启动的service会先后调用onCreate()、onBind()方法,调用者与服务绑定在一起,调用者一旦退出,服务立即终止。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值