`
一夕剑
  • 浏览: 55257 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

android activity与service的生命周期

阅读更多

activity的生命周期

oncreate(Bundle savedInstanceState):在activity第一次被创建的时候调用。这里是你做所有初始化设置的地方──创建视图、绑定数据至列表等。如果曾经有状态记录,则调用此方法时会传入一个包含着此activity以前状态的包对象做为参数。 

 

onRestart():在activity停止后,在再次启动之前被调用。 

 

 

onStart():当activity正要变得为用户所见时被调用。

 

 

onResume():在activity开始与用户进行交互之前被调用。此时activity位于堆栈顶部,并接受用户输入。 

 

 

onPause():当系统将要启动另一个activity时调用。此方法主要用来将未保存的变化进行持久化,停止类似动画这样耗费CPU的动作等。这一切动作应该在短时间内完成,因为下一个activity必须等到此方法返回后才会继续。 

 

 

onStop():当activity不再为用户可见时调用此方法。这可能发生在它被销毁或者另一个activity(可能是现存的或者是新的)回到运行状态并覆盖了它。

 

 

 

onDestroy():在activity销毁前调用。这是activity接收的最后一个调用。这可能发生在activity结束(调用了它的 finish() 方法)或者因为系统需要空间所以临时的销毁了此acitivity的实例时。你可以用isFinishing() 方法来区分这两种情况。

 

协调activity

当一个activity启动了另外一个的时候,它们都会经历生命周期变化。一个会暂停乃至停止,而另一个则启动。这种情况下,你可能需要协调好这些activity

生命周期回调顺序是已经定义好的,尤其是在两个activity在同一个进程内的情况下:

1. 调用当前activity的 onPause() 方法。 

2. 接着,顺序调用新启动activityonCreate()、 onStart()和onResume()方法。 

3. 然后,如果启动的activity不再于屏幕上可见,则调用它的onStop()方法。 


总之:1、Activity 从创建到进入运行态所触发的事件  onCreate()-->onStart-->onResume()

          2、从运行态到停止态所触发的事件                  onPause()--->onStop()

          3、从停止态到运行态所触发事件                     onRestart()-->onStart()--->onResume()

     4、从运行态到暂停态所触发事件                     onPause()

          5、从暂停态到运行态所触发事件                     onResume()

 

 

横竖屏幕切换生命周期

 

1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次. 

2.设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次. 

3.设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法.

 

 

 

service的生命周期

启动Service时可调用startService和bindService()方法来启动,用这两种方法启动的Service的生命周期是不同的。

Service的生命周期只有onCreate,onStart和onDestroy,没有onResume,onPause和onStop,大多数时间Service都是运行的,但在严重的内存压力下它也可能被系统kill,如果被kill,系统会在稍后尝试重新启动这个Service

 

Service的调用
途径一:
调用Context.startService()启动Service,调用Context.stopService()或Service.stopSelf()或Service.stopSelfResult()关闭Service的调用。

Service生命周期分析:
注:onCreate,onStart(),onDestroy()是Service生命周期相关的方法
当Context.startService()启动Service时,如果Service本身没有运行,则调用onCreate()->onStart()完成Service启动。如果Service已经运行,则只调用onStart(),onStart()可以多次被调用。
Service关闭必须调用Context.stopService()或Service.stopSelf()或Service.stopSelfResult()方法,关闭之前调用onDestroy()方法,否则如果Context直接退出而没有停止Service的话,Service会一直在后台运行。该Service的调用者只能再启动后通过stopService关闭Service。
生命周期顺序为:onCreate()->onStart()->onDestroy()

 

途径二:
调用Context.bindService()进行初始化绑定,使用Context.unbindService()取消绑定,由于Service和Context是绑定关系,当Context退出或被销毁时,Service也会相应退出。

Service生命周期分析:
调用Context.bindService()时,Service会经历onCreate->onBind(),onBind将返回给客户端一个IBind实例,IBind允许客户端回调服务的方法。此时Context和Service是绑定在一起的,Context退出了,Service调用onUnbind()->onDestroy()相应退出。
生命周期顺序为:onCreate->onBind(只一次,不可多次绑定)->onUnbind->onDestroy()

BroadcastReceiver只能通过startService启动Service,因为广播本身生命周期很短,bind的话没有意义

 

 

如果不是通过bindService创建的服务(但仍然通过bindService得到了服务对象),就可能unbindService后还在运行,否则应该是结束掉了。

 

分享到:
评论

相关推荐

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

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

    Android Activity生命周期

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

    android Activity生命周期

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

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

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

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

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

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

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

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

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

    android启动以及activity生命周期分析

    ### Android启动及Activity生命周期分析 在Android开发过程中,理解应用程序如何启动及Activity的生命周期是非常重要的。这不仅有助于我们更好地管理程序的状态,还能帮助我们在遇到内存泄漏等问题时进行快速定位和...

    android多个activity和一个service通信

    在描述中提到的“坑”可能指的是在通信过程中遇到的问题,例如Service生命周期管理不当导致内存泄漏,或者Activity和Service之间的同步问题。开发者需要确保在Activity销毁时正确解除与Service的连接,防止Service被...

    android Service 与Activity绑定

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

    android ActivityManagerService 源码分析----Activity管理

    Android ActivityManagerService 是 Android 系统中负责管理 Activity 生命周期的核心组件之一。它提供了一个 ArrayList mHistory 来管理所有的 Activity,Activity 在 AMS 中的形式是 ActivityRecord,Task 在 AMS ...

    Android Activity 生命周期(lifecycle)的研究

    除了Activity本身,还有Service、BroadcastReceiver等组件也有类似的生命周期管理。理解它们的生命周期可以帮助开发者更好地优化应用程序,提高用户体验,并避免内存泄漏等问题。 在项目中,Proguard.cfg文件用于...

    Android Service生命周期及用法!

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

    Activity的生命周期(LifeCycle)

    ### Activity的生命周期...通过上述分析,我们可以清楚地了解Activity的生命周期以及Android系统是如何管理和优化内存资源的。这对于开发者来说是非常重要的知识点,有助于编写高效、稳定的Android应用程序。

    android activity 生命周期

    在Android开发中,Activity是构建用户界面的基本单元,它的生命周期是开发者必须深入理解的关键概念。在Android应用程序中,Activity扮演着展示用户交互界面并处理用户输入的角色。它并不直接提供界面,而是作为UI...

    android_Activity生命周期

    Activity生命周期是Android开发中至关重要的一环,因为它决定了应用如何响应用户操作和系统事件。理解Activity的生命周期对于编写高效、稳定且用户体验良好的应用至关重要。 Activity的生命周期由多个关键状态组成...

    Activity绑定Service(Kotlin)

    Service的生命周期与Activity不同,启动的Service在`onStartCommand()`返回后开始运行,直到调用`stopService()`或`stopSelf()`。绑定的Service在所有客户端解绑后自动停止。 11. **Service的生命周期管理** 注意...

    Android Activity生命周期Demo源码.rar

    在Activity的生命周期中,Intent常用来启动其他Activity或Service。通过`startActivity()`或`startActivityForResult()`可以启动新的Activity,并在`onActivityResult()`中处理返回结果。 了解并熟练掌握Activity...

    android activity 生命周期的深入学习

    Activity生命周期与Service(后台服务)相结合,可以在Service中执行长时间运行的任务,同时保持与Activity的交互。例如,使用`bindService()`可以在Activity与Service之间建立连接,实现通信。 七、生命周期回调的...

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

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

Global site tag (gtag.js) - Google Analytics