美文网首页
8.2 Service

8.2 Service

作者: jadefly | 来源:发表于2018-07-09 09:57 被阅读0次

    简介:Android中实现程序后台运行的解决方案,适用于无需用户交互要求长期运行的任务;

          (一个可以在后台执行耗时操作,且不提供UI界面的App组件,也可以理解为,一个运行在后台,没有界面的Activity)


    生命周期

    生命周期

    onCreate():当Service第一次被创建后立即回调该方法,该方法在整个生命周期 中只会调用一次;

    onDestory():当Service被关闭时会回调该方法,该方法只会回调一次;

    onStartCommand(intent,flag,startId):当调用startService(Intent)方法时回调,可多次调用StartService方法, 但不会再创建新的Service对象;

    IBinder onOnbind(intent):该方法是Service都必须实现的方法,会返回一个 IBinder对象,app通过该对象与Service组件进行通信;

    onUnbind(intent):当该Service上绑定的所有客户端都断开时会回调该方法;


    启动方式

    StartService:1.其他组件调用startService方法启动,启动后生命周期与启动它的组件无关(启动组件销毁服务还在);

                            2.需完成任务后stopSelf或其他组件调用stopService才能停止服务(无论启动多少次,只需停一次);

                            3.再次调StartService会回调onStartCommand;

    BindService:1.调用者与服务绑定在一起,同生共死;

                             2.再次调BindService,不再调用onBind,但会将Binder对象传递给后增加的客户端;

    注:先StartService,再BindService,若unBindService,服务依然存在;

    (原因:由于服务开始由StartService启动,再次BindService只是将Service的内部IBinder对象传递给Activity等组件,并未真实绑定)

    1.StartService创建销毁

    创建service 清单文件配置 代码启动停止

    执行流程(点击两次开始服务,再点击一次停止服务):

    1.onBind()方法并没有被调用;

    2.多次点击启动Service,只会重复地调用onStartCommand 方法;

    3.无论我们启动多少次Service,一个stopService就会停止Service;

    结果

    2.BindService绑定与解除

    创建service 清单文件配置 代码绑定与解除

    执行流程(点击绑定服务,点击获取值,再点击解除绑定):

    1.可以在onBind()方法中返回自定义的IBinder对象并在 ServiceConnection的onServiceConnected()方法中获得 IBinder对象;

    2.绑定多客户端情况需要解除所有 的绑定才会调用onDestoryed方法进行销毁;

    3.服务绑定后,再次点击绑定服务,不会有任何变化;

    结果

    相关文章

      网友评论

          本文标题:8.2 Service

          本文链接:https://www.haomeiwen.com/subject/uwnljftx.html