Service 理解和两种启动方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Service 理解和两种启动方式相关的知识,希望对你有一定的参考价值。

参考技术A

Service 作为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 理解和两种启动方式的主要内容,如果未能解决你的问题,请参考以下文章

Service 两种启动方式

android 启动service的两种方式有啥不同

Android Service的两种启动方式

Android Service两种启动方式详解(总结版)

高级Android开发面试汇总

高级Android开发面试汇总