一、服务的基本认识
- 什么是服务:服务是运行在程序后台执行一些不需要和用户交互和一些需要长期执行的工作,运行在UI线程,因此不能进行一些耗时操作,否则会导致程序卡死。
- 服务于线程的区别:服务可以直接对UI线程进行操作,但不能执行耗时操作,线程可也进行耗时操作,但是不能对UI进行操作,否则会导致程序崩溃。
二、启动服务的两种方式
1.startService
- 定义一个类继承Service类
- 在AndroidMainfest.xml文件中注册
- 调用context的startService(Intent)方法启动线程
- 不再使用时,调用stopService(Intent)方法销毁线程
2.bindService() - 定义一个类继承Service类并创建一个继承了Binder类的方法提供一些公共方法给客户端。
- 在onBinder()方法中返回binder实例。
- 从onServiceConnected回调方法中获取到Binder,并使用其中提供的方法绑定服务。
三、服务的生命周期
服务的生命周期分为两种,绑定activity和不绑定activity
- 不绑定activity:启动服务-->onCreate()-->onStartCommand()-->运行服务-->onDestory()-->销毁服务
通过Intent的startService启动了一个服务,首次创建服务时会执行onCreate()方法来进行一些设置,如果服务已经在运行了则不会调用此方法,接下来执行onStartCommand()方法来在后台一直执行服务,在服务工作完成后需要自己手动调用stopService或者stopSelf()方法来停止服务。当某个操作停止了服务时则会调用onDestory()方法来清理资源,服务被完全的销毁。 - 绑定activity:绑定服务-->onCreate()-->onBind()-->运行服务-->onUnbind()-->onDestory()-->销毁服务
通过执行onBind()绑定了一个服务,首次创建服务时会执行onCreate()方法来进行一些设置,如果服务已经在运行了则不会调用此方法,接下来执行onBind()方法返回Ibind实例并提供一个接口,若不希望绑定则返回为空。当某个操作导致服务被解除了绑定则会调用unbindService()来解除绑定,接下来调用onDestory()方法来清理资源,服务被完全销毁。
网友评论