其他分享
首页 > 其他分享> > 绑定服务

绑定服务

作者:互联网

1、服务()Android中的四大组件之一它能够长期在后台运行且不提供用户界面即使用户到另一应用程序,服务仍可以在后台运行

服务的特点
Service在后台运行,不用与用户进行交互
即使程序被切换到后台,或者用户打开新的应用,服务仍可运行
服务并非运行在独立的进程中,而是依赖于创建服务的应用程序进程。如果某个应用进程被杀掉
在默认情况下, Service运行在应用程序进程的主线程线程中,如果需要在
Service中处理些网络连接等耗时的操作,那么应该将这些任务放在 Service的分线程中处理,避免阻塞用户界面
创建服务

自定义类继承 Service AndroidManifest xm中注册服务
2、服务的生命周期

1、 startService方式开启服务的生命周期

服务会执行 onCreate()→onStartCommand(方法,服务处于运行状态,直到自身调用 stopSelf()方法或者其他组件调用 stopService方法时服务停止,最终被系统销毁。

服务会长期的在后合运行,并且服务的状态与开启者的状态没有关系。

2、 bindService方式开启服务的生命周期

服务会执行 onCreate()→onBind()方法,服务处于绑定状态,客户端通过 unbindService()方法关闭连接,解除绑定时,系统将直接销毁服务。服务与开启者的状态有关,当调用者销毁了,服务也会被销毁。

3、服务端:绑定服务

//1.构建工ntent对象

intentanew Intent(MainActivity, this, Myservice.class):

/调用定方法 onCreate--on8inder-ServiceConncion接口里的 onServiceConnected

//MyService s=new MyserviceO:

bindservice(intent, conn, Service.BIND_AUTO_CREATE):

创建自定义连接类,实现 ServiceConnection接口,重写接口方法。

class Myserviceconnection implements Serviceconnection

/服务端与服务连接成功系统会调用该方法 IBinder service传递过来 override

public void onserviceConnected(componentNa name, Ieinder service)

System.out. printIn("onServiceConnected..."):

Myservice. MyIBinder binder= (Myservice MyIBinder) service; binder.testO;

]

/意外中断连接调用该方法解绑不会调用该方法 @override

public void onServiceDisconnected(componentName name){

System. out. printIn("onServiceDisconnect...."):

运行流程
//1.构建工ntent对象

intentanew Intent(MainActivity, this, Myservice.class):

/调用定方法 onCreate--on8inder-ServiceConncion接口里的 onServiceConnected

//MyService s=new MyserviceO:

bindservice(intent, conn, Service.BIND_AUTO_CREATE):

创建自定义连接类,实现 ServiceConnection接口,重写接口方法。

class Myserviceconnection implements Serviceconnection

/服务端与服务连接成功系统会调用该方法 IBinder service传递过来 override

public void onserviceConnected(componentNa name, Ieinder service)

System.out. printIn("onServiceConnected..."):

Myservice. MyIBinder binder= (Myservice MyIBinder) service; binder.testO;

]

/意外中断连接调用该方法解绑不会调用该方法 @override

public void onServiceDisconnected(componentName name){

System. out. printIn("onServiceDisconnect...."):

运行流程

4、远程服务通信

远程服务通信是通过ADL(Android Interface Definition Language实现的,它是一种接口定义语言(nterface Definition Language),其语法格式非常简单,与Java中定义接口很相似。

定义好AIDL接口之后,接着需要在应用程序中创建 Service的子类该 ServiceonBind的方法所返回的 IBinder对象应该是ADT所生成的 IService.stub的子类

远程服务

注册文件配置:Android:process=“:remote”
和主线程分离;
服务销毁

如果启动服务:startservice()binservice(intent,com,service。BIND_AUTO-CREATE);同时都使用了,只单击某一个stopservice,unbinservice停止都不会调用onDestroy()必须这个停止方法都点击一次

标签:调用,服务,Service,service,绑定,Myservice,方法
来源: https://blog.51cto.com/14589602/2650742