android-基础知识-生命周期

本文详细介绍了Android中Activity、Fragment、Service和Application的生命周期,包括每个状态的含义、页面跳转时的生命周期变化,以及Service的启动方式和保持Service不被杀死的策略。此外,还探讨了View的生命周期及其与Activity的关系。
摘要由CSDN通过智能技术生成

android-基础知识-生命周期

概述

主要涉及的生命周期有

  1. Activity
  2. Fragment
  3. Service
  4. Application
  5. View

一、Activity生命周期

包括 onCreate onStart onResume onPause onStop onDestroy

共计 6个


其中还涉及到 onRestart onSaveInstanceState onRestoreInstanceState 等

1.各方法代表的意义:

(1)onCreate() ,不可见状态

在Activity被创建时回调,第一个生命周期。我们一般在创建Activity时需要重写该方法做一些初始化的操作,如通过setContentView设置界面布局的资源,初始化所需要的组件信息等。

(2)onStart() ,可见状态

该方法回调表示Activity正在启动,此时Activity处于可见状态,只是还没有在前台显示,因此用户也无法交互。可以简单理解为Activity已显示却无法被用户看见。

(3)onResume() ,可见状态

此方法回调时,Activity已在在屏幕上显示UI并允许用户操作了。从流程图可见,当Activity停止后(onPause、onStop方法被调用),重新回到前台时也会调用onResume方法。可以在onResume方法中初始化一些资源,比如打开相机或开启动画。

(4)onPause() ,可见状态

此方法回调时,Activity正在停止(Paused形态),通常接下来onStop()会被回调。但通过流程图可见,另一种情况是onPause()执行后直接执行了onResume方法,这可能是用户点击Home键,让程序退回到主界面,程序在后台运行时又迅速地再回到到当前的Activity,此时onResume方法就会被回调。我们可以在onPause方法中做一些数据存储、动画停止、资源回收等操作。另外,onPause方法执行完成后,新Activity的onResume方法才会被执行。所以onPause 不能太耗时,因为这可能会影响到新的Activity的显示。

(5)onStop() ,不可见状态

此方法回调时, Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行。同样地,在onStop方法可以做一些资源释放的操作,不能太耗时。

(5) onRestart(),可见状态

此方法回调时,表示Activity正在重新启动,由不可见状态变为可见状态。这种情况,一般发生在用户打开了一个新的Activity时,之前的Activity就会被onStop,接着又回到之前Activity页面时,之前的Activity的 onRestart方法就会被回调。

(6)onDestroy() ,不可见状态

此方法回调时,表示 Activity正在被销毁,也是生命周期最后一个执行的方法,一般我们可以在此方法中做一些回收工作和最终的资源释放。

2.onSavedInstanceState()和onRestoreInstanceState() 理解:

2.1 onSavedInstanceState()和onRestoreInstanceState()并不是activity生命周期的方法。
  • onSaveInstanceState()会在onPause()或onStop()之前执行;
  • onRestoreInstanceState()会在onStart()和onResume()之间执行。
2.2 onRestoreInstanceState()会跟onSaveInstanceState()不一定成对出现

onSaveInstanceState()需要调用的时,activity可能销毁,也可能没有销毁,只有在activity销毁重建的时候onRestoreInstanceState()才会调用。

3.Activity 页面跳转生命周期

  1. A->B
  2. A->透明B
  3. 栈内有ABC其中B是SingTask 跳转B
  4. 栈内有AB其中B是SingTop 跳转B
3.1 A->B
  1. A: onPause
  2. B: onCreate onStart onResume
  3. A: onStop

B按返回键:

  1. B: onPause
  2. A: onRestart onStart onResume
  3. B: onStop onDestroy
3.2 A->透明B
  1. A: onPause
  2. B: onCreate onStart onResume
  3. 注意: (A 没有调用onStop)

B按返回键:

  1. B: onPause
  2. A: onResume
  3. B: onStop onDestroy
  4. 注意: (A 没有调用onRestart onCreate)
3.3 栈内有ABC其中A是SingTask 跳转A
  1. B: onDestroy
  2. c: onPause
  3. A: onNewIntent onRestart onStart onResume
  4. C: onStop onDestroy
3.4 栈内有AB其中B是SingTop 跳转B
  1. B: onPause->onNewIntent->onResume

二、 Fragment 生命周期

Fragment生命周期受宿主Activity的生命周期影响,一般分为两种

  1. 静态加载 (xml加载fragment)
  2. 动态加载 代码中加载

1.生命周期:

onAttach onCreate onCreateView onActivityCreated onStart onResume onPause onStop onDestroyView onDestroy onDetach

共计 11个

2.生命周期多了几个方法

  • onAttach() 在Fragment 和 Activity 建立关联是调用(Activity 传递到此方法内)
  • onCreateView() 当Fragment 创建视图时调用
  • onActivityCreated() 在相关联的 Activity 的 onCreate() 方法已返回时调用。
  • onDestroyView() 当Fragment中的视图被移除时调用
  • onDetach() 当Fragment 和 Activity 取消关联时调用。

3.静态加载Fragment与Activity生命周期

3.1 打开界面
  1. F: onAttach -> onCreate-> onCreateView
  2. A: onCreate
  3. F: onActivityCreated
  4. A: onStart
  5. F: onStart
  6. A: onResume
  7. F: onResume
3.2 按下主屏界面
  1. F: onPause
  2. A: onPause
  3. F: onStop
  4. A: onStop
3.3 重新打开界面
  1. A: onRestart -> onStart
  2. F: onStart
  3. A: onResume
  4. F: onResume
3.4 按返回键
  1. F:onPause
  2. A: onPause
  3. F: onStop
  4. A: onStop
  5. F: onDestroyView ->onDestroy -> onDetach
  6. A: onDestroy

4.动态加载Fragment与Activity生命周期

只要当执行FragmentTransaction执行commit()后,fragment才会走正常的生命周期方法,先是执行一连串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值