Service的基础讲解,一下两篇文章讲的不错:
1.http://www.360doc.com/content/14/0415/18/2793098_369238276.shtml
2.http://blog.csdn.net/ryantang03/article/details/7770939 service生命周期相关
这里只做一些总结和常用知识面试点等:
1.Service是在哪个线程中运行的?是主线程吗?
答案:是运行在主线程的,也就是UI线程,而并不是子线程,所以如果有耗时操作,不能在Service中直接写,必须新起线程。
2.Service生命周期
需要注意的是在调用了onBind之后,service就和对应的activity进行了绑定,如果activity退出时,service也会停止掉。
当同时调用了startService和bindService两个方法的时候,service必须经过stopService和unBindService两部,service才能进行destroy操作。
3.如果我们要进行耗时操作,我们当需要在service中进行耗时操作时,需要怎样做?
(1).在Service中启动线程进行操作。
(2).用IntentService,它自带了Worker线程。
有关IntentService的使用可以参考http://www.tuicool.com/articles/zeMFFvB
4.既然Service不能处理耗时操作,如果要进行耗时操作,我们必须在它内部启动thread或者用IntentService,那我们为什么还要用Service而不是直接用Thread?
(1).Service只会创造一次,而且程序可以控制它停止
(2),Service也可以被多个Activity控制,进行资源共享,有自己独立的生命周期方法。而Thread一旦起来了就没有办法控制,且资源不共享,不能在多个Activity中控制一个thread
(3).Service中可以通过broadcast来启动service,而thread不可以。
可参见:http://jiangnanlove.iteye.com/blog/1333347
5.Service可以运行在一个单独的进程中,可以在AndroidManifest中配置process即可。这样我们可以通过启动Service来完成一个进程的创建。
6.在使用过程中要注意Service的增加会增加耗电量,所以要注意Service的管理和使用。