`

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);//解除绑定

 

分享到:
评论

相关推荐

    android Service的生命周期

    总的来说,Android Service的生命周期管理是开发者必须掌握的关键技能,正确理解和使用Service生命周期能够确保应用的稳定性和效率,避免不必要的资源消耗。在开发过程中,我们还需要注意Service的权限管理,以及在...

    AndroidService生命周期及用法[收集].pdf

    使用`startService()`方法启动Service,这会导致Service生命周期中的`onStartCommand()`被调用。若要停止Service,可以调用`stopService()`。需要注意的是,即使调用了`stopService()`,Service可能并不会立即停止,...

    servlet运行原理及生命周期.pdf

    ### Servlet 运行原理及生命周期详解 #### 一、Servlet简介 Servlet 是 Java Web 开发中的一个重要组成部分,它主要用于处理客户端发送至服务器端的 HTTP 请求,并返回相应的响应结果。Servlet 技术允许开发者以 ...

    Android课程第一次实验报告_Andorid应用程序Activity生命周期.docx

    本实验报告将深入探讨Android应用程序,尤其是Activity、Service和Intent Receiver的生命周期,并解释如何正确管理这些组件以避免不必要的进程销毁。 首先,Android应用通常在独立的Linux进程中运行。当应用需要...

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

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

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

    2. **Service生命周期** - **onCreate()**:Service首次被创建时调用,用于初始化工作。 - **onStartCommand()**:接收到startService()请求时调用,返回一个START_STICKY、START_NOT_STICKY或START_REDELIVER_...

    基于Android Service 生命周期的详细介绍

    以下是对Service生命周期、用途以及与Activity通信的详细解释。 1. **Service概念及用途**: - Service是一种在后台运行的组件,不具有用户界面,适用于执行长时间任务,例如播放音乐、定时数据同步等。 - 当应用...

    Android停止Service的例程

    Android系统的Service生命周期管理主要由ActivityManagerService(AMS)负责。当你调用startService()或bindService()时,AMS会通过Binder机制将请求传递到目标进程的SystemServer,然后调用Service的相应生命周期...

    ServiceDemo.zip

    4. **Service生命周期**: 服务的生命周期管理非常重要,防止内存泄漏和性能问题。当Service被创建后,系统会调用`onCreate()`,然后是`onStartCommand()`。如果服务被绑定,还会调用`onBind()`。当服务不再需要时,...

    Service的入门,主要介绍service的概念和使用方法

    Service生命周期中的关键方法包括onCreate()、onStartCommand()、onBind()、onUnbind()和onDestroy()。 在Service的启动方式上,有两种主要的方法: 1. **onStartCommand()** 方式:这是通过调用startService()...

    ServiceDemo

    2. **启动Service**: 使用`startService()`方法可以启动一个Service,此操作会在Service生命周期中的`onCreate()`和`onStartCommand()`方法中执行。Service会持续运行,直到被显式停止(使用`stopService()`或`...

    service基础

    1. **创建(Created)**:当`startService()`或`bindService()`被调用时,Service的`onCreate()`方法会被调用,这是Service生命周期的起点。在这里,你可以进行Service的初始化设置。 2. **启动(Started)**:如果...

    Activity和Service

    总结来说,Activity和Service是Android应用程序的核心组成部分,理解它们的工作原理和生命周期对于编写高效、稳定的Android应用至关重要。开发者需要熟练掌握如何启动、管理Activity以及如何启动和绑定Service,以...

    android service 源码

    总的来说,Android Service的源码学习涉及了Service生命周期、Service与客户端交互、进程通信、线程管理等多个方面。通过对这些知识点的深入理解和实践,开发者可以更好地设计和优化自己的应用程序,提升用户体验。

    Android生命周期

    前台进程具有最高优先级,它们是与用户交互的进程,包括正在运行的Activity、与用户交互的Service、执行生命周期回调函数的服务或BroadcastReceiver。可见进程虽然用户可见但不交互,服务进程无用户界面但在后台长期...

    android基础知识05:四大组件之service 01实例程序

    1. **启动Service**:通过Context.startService()方法启动,每次调用都会使Service生命周期中的onStartCommand()方法被调用,即使Service已经在运行。启动Service时,系统会创建Service实例,如果已经存在则直接执行...

    android Service example

    在Android应用开发中,...理解Service的工作原理和生命周期,以及何时使用启动Service和绑定Service,是每个Android开发者必备的技能。通过阅读提供的博客链接和实践ServiceStudy项目,你将能更好地掌握这一核心概念。

    android Service 与Activity绑定

    Service生命周期中的关键方法包括onCreate(), onStartCommand(), onBind(), onUnbind()和onDestroy()。 2. **Activity与Service的绑定** Activity可以通过bindService()方法来与Service建立绑定关系,这种绑定方式...

    Service 相关操作

    Service的生命周期由四个主要方法组成:onCreate(), onStartCommand(), onBind()和onDestroy()。当Service首次创建时,调用onCreate()方法。接着,每次通过startService()启动Service时,都会调用onStartCommand(),...

Global site tag (gtag.js) - Google Analytics