`
bywyu
  • 浏览: 20193 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android Service 生命周期

阅读更多

Android Service 生命周期可以促使移动设备的创新,让用户体验到最优越的移动服务,只有broadcast receivers执行此方法的时候才是激活的,当 onReceive()返回的时候,它就是非激活状态。

如果没有程序停止它或者它自己停止,service 将一直运行。在这种模式下,service 开始于调用Context.startService () ,停止于Context.stopService (). service 可以通过调用Android Service 生命周期 () 或 Service .stopSelfResult()停止自己。不管调用多少次startService () ,只需要调用一次 stopService () 就可以停止service

可以通过接口被外部程序调用。外部程序建立到service 的连接,通过连接来操作service 。建立连接调开始于Context.bindService (), 结束于Context.unbindService (). 多个客户端可以绑定到同一个service ,如果service 没有启动, bindService () 可以选择启动它。

这2种模式不是完全分离的。你可以可以绑定到一个通过startService ()启动的服务。如一个intent想要播放音乐,通过startService () 方法启动后台播放音乐的service 。然后,也许用户想要操作播放器或者获取当前正在播放的乐曲的信息,一个activity就会通过bindService ()建立一个到此service 的连接. 这种情况下 stopService () 在全部的连接关闭后才会真正停止service

像activity一样, service 也有可以通过监视状态实现的生命周期 。但是比activity要少――只有3个――而且是public的而不是protected的

  1. void onCreate()   
  2. void onStart(Intent intent)   
  3. void onDestroy() 

通过实现这3个方法,可以监视service 生命周期 的2个嵌套循环:

整个生命周期 从onCreate() 开始,从onDestroy() 结束,像activity一样, a Android Service 生命周期 在 onCreate()中执行初始化操作,在 onDestroy()中释放所有用到的资源。如:后台播放音乐的service 可能在 onCreate()创建一个播放音乐的线程,在onDestroy()中销毁这个线程。

活动生命周期 开始于 onStart(). 这个方法处理传入到startService ()方法的intent。 音乐服务会打开intent查看要播放哪首歌曲,并开始播放。当服务停止的时候,没有方法检测到――没有 onStop() 方法,onCreate() 和 onDestroy() 用于所有通过Context.startService () or Context.bindService () 启动的service 。onStart() 只用于通过startService ()开始的service

如果一个Android Service 生命周期 是可以从外部绑定的,它就可以触发以下的方法:

  1. IBinder onBind(Intent intent)   
  2. boolean onUnbind(Intent intent)   
  3. void onRebind(Intent intent) 

onBind() 回调被传递给调用bindService 的intent, onUnbind() 被unbindService ()中的intent处理。如果服务允许被绑定。那么onBind() 方法返回客户端和sercie的沟通通道。如果一个新的客户端连接到服务,onUnbind() 会触发onRebind() 调用。

下面的图表说明了sercice的回调方法。下面的图片将通过 startService 和通过bindService ()启动的service 分开了,但是要注意不管他们怎么启动的,都有可能被客户端连接,因此都有可能触发到onBind() 和 onUnbind() 方法。

当经过receiver 请求,broadcast message到达的时候, Android 调用持有message的intent的 onReceive() 方法,只有broadcast receivers执行此方法的时候才是激活的,当 onReceive()返回的时候,它就是非激活状态

一个含有激活的broadcast receiver的进程是不会被中止的。但是只含有非激活组件的进程在它占用的内存被其他程序请求的时候,任何时间都可以被中止。 当响应broadcast message的程序因为消耗很多时间而在另外一个线程 而非UI所在的线程处理的时候会出现一个问题。

当 onReceive() 开启一个线程并返回后,整个程序(包括新建的线程)状态是非激活的(除非此进程中有其他激活的组件), 因此这个进程就有被中止的危险。解决这个问题的办法是onReceive() 方法启动一个Android Service 生命周期 ,让sercie去做耗时的工作,这样系统就知道此进程中还有活动的工作。

分享到:
评论

相关推荐

    Android Service生命周期及用法!

    `onDestroy()`则在Service被停止时调用,标志着Service生命周期的结束。值得注意的是,Service的生命周期管理需要谨慎处理,以避免内存泄漏和不必要的资源消耗。 Service与Activity之间的通信是通过Binder机制实现...

    Android Service生命周期详解

    总的来说,Android Service生命周期管理涉及到一系列的回调方法,通过这些方法,开发者能够精确控制服务的启动、运行和终止,同时确保服务在正确的时间释放资源。合理地使用服务能提高应用的效率和用户体验。在实际...

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

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

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

    Service概念及用途: Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那...Service生命周期 : Android

    android Service的生命周期

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

    Android说明Service生命周期的代码例子

    以下是一个关于Service生命周期的详细解析,结合代码示例来阐述如何在Android中操作Service。 1. **Service生命周期概述** Service的生命周期主要包含以下几个阶段:onCreate()、onStartCommand()、onBind()、...

    Activity和Service生命周期及使用AIDL通信实例备份

    本篇将深入探讨Activity和Service的生命周期以及如何利用Android Interface Definition Language (AIDL)进行进程间通信。 Activity是Android应用程序的用户界面,它负责与用户交互。Activity的生命周期分为几个关键...

    ServiceLifecycle:Android Service生命周期

    理解并掌握Service生命周期对于开发高效、稳定的Android应用至关重要。 1. **Service的启动和绑定** - **启动(Start)**: 当通过startService()方法启动Service时,Service会经历onCreate() -> onStartCommand() ...

    Android中service基本用法,生命周期1

    startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和activity绑定后,和activity共存亡,activity...

    Android生命周期Demo

    首先,Android生命周期是指一个Android组件(如Activity、Service等)在其存在期间经历的一系列状态变化。对于Activity,这些状态包括创建(Created)、启动(Started)、运行(Resumed)、暂停(Paused)、停止...

    浅谈Android生命周期

    Android生命周期是指一个Activity、Service、BroadcastReceiver或ContentProvider从创建到销毁的过程。每个组件都有其特定的生命周期方法,开发者需要根据这些方法来编写代码,确保应用程序能够正确响应系统事件,如...

    android项目教程Service生命周期.pptx

    - 未绑定Activity的Service生命周期图显示了startService()启动的过程,而绑定Activity的Service生命周期图则展示了bindService()启动的过程,两者在生命周期上有显著差异。 理解并熟练掌握Service的生命周期及其...

    Android Activity生命周期

    此外,Activity 生命周期还与其他组件的生命周期相关,例如 Fragment、Service 等。理解 Activity 生命周期是 Android 开发的基础,掌握了 Activity 生命周期,可以更好地开发 Android 应用程序。 在实际开发中,...

    service的生命周期以及启动方式

    总的来说,理解并熟练掌握Service的生命周期和启动方式是Android开发中的重要技能,它有助于优化应用性能,减少资源浪费,并实现高效的服务管理。在实际项目中,合理运用Service可以帮助我们实现后台任务的异步处理...

    Android组件的生命周期

    - **Service生命周期**: - `onCreate()`:Service首次创建时调用。 - `onStartCommand()`或`onBind()`:根据Service类型(启动型或绑定型),在Service启动时调用。 - `onDestroy()`:Service销毁前调用。 - **...

    android Activity生命周期

    通过阅读`ActivityManagerService`和`ActivityThread`类的源码,我们可以了解系统如何管理Activity的生命周期。例如,`ActivityThread`中的`handleLaunchActivity()`方法触发了`onCreate()`,`handleResumeActivity...

    android Activity生命周期详解(图文)

    首先,Activity的生命周期是Android系统管理组件的核心机制,它包括了创建、启动、暂停、恢复和销毁等几个关键状态。每个状态的变化都对应着特定的方法调用,如`onCreate()`, `onStart()`, `onResume()`, `onPause()...

    Service练习源码

    首先,Android Service生命周期包含onCreate()、onStartCommand()、onBind()、onUnbind()和onDestroy()等关键方法。当Service首次创建时,系统会调用onCreate(),在这个方法中初始化Service所需的资源。接着,每次...

Global site tag (gtag.js) - Google Analytics