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

Service和Broadcast都是运行在主线程中,所以不能执行耗时的操作以免产生ANR.

Service和Thread的区别:

  1. Service依赖于UI线程, 而Thread相对于比较独立. 如果确实需要在Service里面做一些耗时的操作,那么还是必须在Service里面去起一个Thread来做. 一般不在Activity里面做匿名thread来做耗时操作,因为如果Activity被回收无法对匿名的thread进行控制.

Service的启动方式:

onCreate()方法:

首次创建服务时,系统将调用此方法来执行一次性设置程序(在调用 onStartCommand() 或 onBind() 之前).如果服务已在运行,则不会调用此方法。该方法只被调用一次.


一.startService, 以这种方式启动的service将一直在后台运行,不受Activity销毁的影响,除非主动的去停止该service. 且该方法启动service时,那么 service里面的onBind方法可以返回null..

public IBinder onBind(Intent intent) {

    return null;

}

1.定义一个类继承Service.

2.在Manifest.xml文件中配置该Service.

3.使用Context的startService(Intent)方法启动该Service

4.不再使用时,调用stopService(Intent)方法停止该服务


二.bindService, 以这种方式启动的service必须在onBind()方法里面返回IBinder对象.

  1. 创建BindService服务端,继承自Service并在类中创建一个实现IBinder接口的实例对象并提供公共方法给客户端调用.
  2. 从onBind()回调方法返回此Binder实例.

  3. 在客户端中,从onServiceConnected()回调方法接收Binder,并使用提供的方法调用绑定服务.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    service段还有下面这实现,在client端通过参数 IBinder来驱动service(Binder binder = (BluetoothLeService.LocalBinder)mservice;

BluetoothLeService service = binder.getService(); 在通过service来调用对应的方法来进行通信)

results matching ""

    No results matching ""