前言:
很久没来写博客了,中间工作非常忙,也没时间看书,不过学到了很多的东西,现在第一版已经发布了,也没那么忙了,开始继续之前的计划,重新系统的看一遍google官方的文档,正在写个小service的项目,就从service开始吧,慢慢补齐。
正文:
services 是个可以运行在后台的可以执行长时间操作的组件,没有界面。
有两种启动方式,被start或被bind。区别在于:
1.start:一旦被start,就无限期的运行在后台,直到调用destroy或动作执行完成。通常start的service执行单独的操作而且不需要有返回值给调用者。比如 下载或者升级。
2.bound: 如果是bindService,则会提供一个interface来和service交互。一个service可以同时被多个组件bind,被bound的service的生命周期跟bind的相同,当最后一个unbind了,该service也就被destroy了。
一个service可以被start,也可以被bind,只是需要我们重写相应的方法就好了。需要注意的是:service是在主线程中运行的,如果执行阻塞操作的话,需要新建线程,来防止ANR。
service是一个当你没有对你的应用交互的时候也可以运行在后台的简单组件。所以我们需要注意分析我们需要的是一个service还是一个thread,还是asyncTask或handlerThread。当我们需要进行一个主线程之外的动作,而且只是在和我们的应用交互的时候才会用得到的时候,那我们需要的是一个Thread,或者AsyncTask或HandlerThread.