`

service生命周期 运行原理

阅读更多

 

服务不能自己运行,需要通过调用Context.startService()Context.bindService()方法启动服务。这两个方法都可

 

以启动Service,但是它们的使用场合有所不同。

 

1.使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。

 

使用bindService()方法启用服务,调用者与服务绑定在了一起,所有调用者一旦退出,服务也就终止。一个调用者退出,服务照常运行

 

2.采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,

 

接着调用onStart()/onStartCommand()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并

 

不会导致多次创建服务,但会导致多次调用onStart()/onStartCommand()方法。

 

采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用

 

onDestroy()方法。
 

 

3.采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,

 

接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,

 

。接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会

 

导致多次创建服务及绑定(也就是说onCreate()onBind()方法并不会被多次调用)。但是服务会返回一个binder给调用者,如果binder有创建的话,即多个调用者共享一个服务和一个binder,都可以操作服务,如果调用者希望与正在绑定的服务

 

解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。

 

三。Service的生命周期

 

1.Service常用生命周期回调方法如下:

 


onCreate()
该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()bindService()方法,

 

服务也只被创建一次。 onDestroy()该方法在服务被终止时调用。
 

 

2. Context.startService()启动Service有关的生命周期方法

 

onStart() 只有采用Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。

 

多次调用startService()方法尽管不会多次创建服务,但onStart() 方法会被多次调用。

 


3. Context.bindService()
启动Service有关的生命周期方法

 

onBind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,

 

当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法被多次调用。

 

onUnbind()只有采用Context.bindService()方法启动服务时,该方法在调用者与服务解除绑定时(unbindService()或退出activity),才会回调该方法。

 

备注:

 

1. 采用startService()启动服务

 

     Intent intent = new Intent(DemoActivity.this, DemoService.class);

 

     startService(intent);

 

2.Context.bindService()启动

 

    Intent intent = new Intent(DemoActivity.this, DemoService.class);

 

    bindService(intent, conn, Context.BIND_AUTO_CREATE);

 

   //unbindService(conn);//解除绑定

 

分享到:
评论

相关推荐

    教你理解微信小程序的生命周期和运行原理

    微信小程序的生命周期和运行原理       (此图片来源于网络,如有侵权,请联系删除! ) 写微信小程序,他的生命周期不能不知道,不知道小程序就会出现各种bug而无法解决。小助君公众号带你学习小程序的生命周期和...

    Android Service原理演示程序(直接运行)

    本程序演示了Service的生命周期,系统服务及自定义服务演示。

    Filter(过滤器)简介和工作原理

    Init 方法在 Filter 生命周期中仅执行一次,Web 容器在调用 init 方法时,会传递一个包含 Filter 的配置和运行环境的 FilterConfig 对象。 2. doFilter():doFilter() 方法类似于 Servlet 接口的 service() 方法。...

    计算机毕业设计 - Android系统原理与开发要点详解-培训课件,保证可靠运行,计算机毕业生可参考,免费资源下载

    接着,课件详细讲解了Android开发的关键技术和要点,包括Activity和Service的生命周期管理、Intent和BroadcastReceiver的通信机制、数据存储和访问、网络编程以及UI设计等。通过结合实例和代码演示,使开发者能够...

    实验四-Android基本组件交互实验.doc

    Service组件 Service一般由一个Activity或其他Context对象来启动,当启动Service之后,该Se rvice将会在后台运行,及时启动这个Service的Activity或其他组件的生命周期已经结 束,Service仍然会继续运行,直到自己...

    《Android系统源代码情景分析》

    5.4.3 Binder引用对象的生命周期 5.4.4 Binder代理对象的生命周期 5.5 Binder对象死亡通知机制 5.5.1 注册死亡接收通知 5.5.2 发送死亡接收通知 5.5.3 注销死亡接收通知 5.6 Service Manager的启动过程...

    Android系统源代码情景分析-罗升阳-源码

    5.4.1 Binder本地对象的生命周期 5.4.2 Binder实体对象的生命周期 5.4.3 Binder引用对象的生命周期 5.4.4 Binder代理对象的生命周期 5.5 Binder对象死亡通知机制 5.5.1 注册死亡接收通知 5.5.2 发送死亡接收...

    Android插件框架Android-Plugin-Framework.zip

    3、插件支持activity非代理模式,真正实现Activity无需注册,既不用反射,也不用代理,实现Activity完整生命周期。 4、插件库apk可无任何特殊代码。如插件中的fragment,activity等无需继承任何特定基类或...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    第1章 Activity的生命周期和启动模式 1 1.1 Activity的生命周期全面分析 1 1.1.1 典型情况下的生命周期分析 2 1.1.2 异常情况下的生命周期分析 8 1.2 Activity的启动模式 16 1.2.1 Activity的LaunchMode 16 ...

    Android开发案例驱动教程 配套代码

    13.1.1 本地Service生命周期 317 13.1.2 远程Service生命周期 318 13.2 本地Service 319 13.2.1 本地Service案例 319 13.2.2 编写AudioService 320 13.2.3 调用Service 322 13.2.4 重构案例 323 13.3 远程...

    Android开发艺术探索

    第1章 Activity的生命周期和启动模式 / 1 1.1 Activity的生命周期全面分析 / 1 1.1.1 典型情况下的生命周期分析 / 2 1.1.2 异常情况下的生命周期分析 / 8 1.2 Activity的启动模式 / 16 1.2.1 Activity的...

    android开发艺术探索高清完整版PDF

    目录 第1章 Activity的生命周期和启动模式 / 1 1.1 Activity的生命周期全面分析 / 1 1.1.1 典型情况下的生命周期分析 / 2 1.1.2 异常情况下的生命周期分析 / 8 1.2 Activity的启动模式 / 16 1.2.1 Activity的...

    Android开发应用实战详解源代码

    2.5 activity的生命周期 2.5.1 activity状态 2.5.2 剖析activity 2.6 android进程和线程 2.6.1 进程 2.6.2 线程 2.6.3 远程调用(remote procedure calls) 2.7 intent消息传递 2.8 intent广播事件 2.8.1 广播事件 ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    2.8 JSF的运行流程和生命周期 109 2.8.1 恢复视图阶段 110 2.8.2 应用请求值阶段 110 2.8.3 处理输入校验阶段 111 2.8.4 更新模型的值阶段 111 2.8.5 调用应用阶段 111 2.8.6 生成响应阶段 111 2.9 利用JSF的消息 ...

    精通ANDROID 3(中文版)1/2

    2.7 了解应用程序生命周期  2.8 调试应用程序  2.8.1 启动模拟器  2.8.2 StrictMode  2.8.3 参考资料  2.9 小结  第3章 使用Android资源  3.1 资源  3.1.1 字符串资源  3.1.2 布局资源  3.1.3 ...

    精通Android 3 (中文版)2/2

    2.7 了解应用程序生命周期  2.8 调试应用程序  2.8.1 启动模拟器  2.8.2 StrictMode  2.8.3 参考资料  2.9 小结  第3章 使用Android资源  3.1 资源  3.1.1 字符串资源  3.1.2 布局资源  3.1.3 ...

Global site tag (gtag.js) - Google Analytics