服务学习和使用

  • 介绍
    可以长期在后台运行,即使用户切到另一个应用程序,服务依旧可以在后台运行。
  • 注意
    使用时候一定要在清单文件中进行静态注册。
    并且自定义一个类extends Service类
  • 服务第一种创建方式以及生命周期
startService的方式开启服务
startService(intent) --->
onCreate()--->
onstartCommand()--->
进入服务运行状态--->
当调用自身的stopself()或者是stopService()--->
onDestroy();

第一中启动服务的特点

使用简单,但是很难与调用者进行通信、数据交换等等必要的操作。服务与调用者之间基本不存在太多的关联
哪怕
  • 服务第二种创建方式以及生命周期
bindService的方式启动服务
bindService(intent,serviceConnection,flag)--->
onBind()--->
客户端绑定了服务--->
当调用unBind()--->
onDestroy()

第二种启动服务的特点

服务与调用者之间可以进行方法调用和数据交互
关键是自定义的两个类,一个是implements  ServiceConnection;一个是extends Binder;
接下来看看如何实现数据交互的过程:
Paste_Image.png
  • 补充:本地服务通信
    上述的方式,可以认为是本地服务通信,就是开发一个Service类,该类会提供一个IBinder onBind(Intent intent)方法,onBind()方法返回的IBinder对象会作为参数传递给ServiceConnection类中的onServiceConnected()方法,这样访问者就可以通过IBinder对象来与Service 进行通信了
  • 补充:远程服务通信
在Android系统中,各个应用程序都运行在自己的进程中,进程之间一般无法直接进行通信,如果想要完成
不同进程之间的通信,就需要使用远程服务通信。
远程服务通信是通过ALDL(Android Interface Definition Language)实现的,是一种接口定义语言。
正在看着。。。

你可能感兴趣的:(服务学习和使用)