Android四大组件之Service

来源:互联网 发布:win7双网卡未识别网络 编辑:程序博客网 时间:2024/04/28 07:00

            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的管理和使用。




0 0