8.2 Service

简介: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.服务绑定后,再次点击绑定服务,不会有任何变化;

结果

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【Android Service】 Service 简介(★★★) 很多情况下,一些与用户很少需要产生交互的应用程...
    Rtia阅读 3,249评论 1 21
  • 2.1 Activity 2.1.1 Activity的生命周期全面分析 典型情况下的生命周期:在用户参与的情况下...
    AndroidMaster阅读 3,300评论 0 8
  • 前言:本文所写的是博主的个人见解,如有错误或者不恰当之处,欢迎私信博主,加以改正!原文链接,demo链接 Serv...
    PassersHowe阅读 1,535评论 0 5
  • 上篇我们讲解了Android中的5中等级的进程,分别是:前台进程、可见进程、服务进程、后台进程、空进程。系统会按照...
    徐爱卿阅读 3,997评论 6 33
  • 图片来自网络 文 沁蓝 01 经常听别人说起,羡慕某某事业有成,怎么他运气那么好;羡慕某某功成名就,怎么他有如此好...
    沁蓝说阅读 686评论 0 0

友情链接更多精彩内容