Service面试小结


Service的面试小结

1.Service是什么?

Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。

注意: Service是运行在主线程里面的,不能做耗时操作。

2.Service和Thread的区别

  1. Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。
  2. Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!

因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。

3.Service的启动方式

3.1Startservice

  • 1.定义一个类继承Service
  • 2.在Manifest.xml文件中配置该Service
  • 3.使用Context的startService(intent)方法启动,当启动的时候,会马上调用service的onCreate和 onStartCommand方法。
  • 不在使用的时候需要stopService(intent)方法

3.2 bindService

允许service和Activity进行交互和通讯。

  • 1.创建BindService服务端,继承自Service类,创建一个实现Bbinder接口实例对象并提供公共方法给客户端调用。
  • 2.从onBinde()回调方法返回此Binder实例
  • 3.在客户端中,从onServiceConnected()回调方法中接收binder,并使用提供的方法绑定方法。

4.Service的生命周期

这里需要注意的是如果你既点击了startService和bindService的话,只有再执行stopService和unBindService方法同时满足,才会执行onDestrory方法销毁service。

GoogleAPI

chapter10

野望 wechat
欢迎订阅我的个人微信公众号:yewang1993