Service 理解和两种启动方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Service 理解和两种启动方式相关的知识,希望对你有一定的参考价值。
参考技术AService 作为android系统的四大组件之一,是一种可以在后台长时间运行操作而没有用户界面的应用组件。
1、Thread是程序运行的最小单位即线程,可以执行异步长时间耗时的操作。
2、Service是android中的组件,是运行在主线程上的,是要依托android程序运行的,所以不能做耗时操作。
Service android是四大组件之一。Service 是一个抽象类,我们需要些一个自定义Service继承于Service。
Service 的启动方式有两种,一种是startService(),一种是bindService().这两种方式有有什么区别.
Service 的生命周期跟启动方式有关。
stratService的生命周期: onCreate() -> onStartCommand() -> onDestroy()
bindService的生命周期: onCreate() -> onBind() -> onUnbind() -> onDestroy()
用startService 方式启动Service的时候重写onStartCommand()的方法。每次用该方式启动Service的时候都会调用改方法。
返回值是一个int类型的:
这里的参数是:
startService的完整Service:
调用也就是简单的startService:
bindService 的方式启动Service,其作用是该Service可以和启动它的Context(Activity等)进行通讯。其是ServiceConnection()的接口方法和服务器交互,在绑定即onBind()的时候回调。在这个方法中获取Service传递过来的IBinder对象,通过这个对象实现跟宿主交互。
BindService的Service:
调用的方式:先创建ServiceConnection:
调用方式不同;
使用Service的步骤:
1.定义一个类继承 Service
2.在 Manifest.xml 文件中配置该 Service
3.使用Context的 startService(Intent) 方法启动该Service
4.不再使用时,调用 stopService(Intent) 方法停止该服务
使用这种start方式启动的Service的 生命周期 如下:
onCreate() ---> onStartCommand() ( onStart() 方法已过时) ---> onDestory()
说明 :如果服务已经开启,不会重复的执行 onCreate() , 而是会调用 onStart() 和 onStartCommand() 。
服务停止的时候调用 onDestory() 。服务只会被停止一次。
特点 :一旦服务开启跟调用者(开启者)就没有任何关系了。开启者退出了,开启者挂了,服务还在后台长期的运行。开启者 不能调用 服务里面的方法。
使用Service的步骤:
使用这种start方式启动的Service的 生命周期 如下:
onCreate() ---> onBind() ---> onunbind() ---> onDestory()
注意 :绑定服务不会调用 onstart() 或者 onstartcommand() 方法
特点 :bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。
绑定者可以调用服务里面的方法。
以上是关于Service 理解和两种启动方式的主要内容,如果未能解决你的问题,请参考以下文章