Abdroid四大基本组件

Activity

生命周期

函数意义
onCreate()这是第一个回调,在活动第一次创建时调用。此时Activity还在后台,不可见,所以一些初始化不应该在这进行,因为看不到
onStart()这个回调在活动为用户可见时被调用,但是还没出现在前台,我们还看不到,无法与Activity交互。
onResume()这个回调在应用程序与用户开始可交互的时候调用,在这个阶段已经出现在前台并且可见了,可以打开独占设备。
onPause()被暂停的活动无法接受用户输入,不能执行任何代码。当前活动将要被暂停,上一个活动将要被恢复时调用
onStop()当活动不在可见时调用,但是Activity对象还在内存中,没有被销毁,这个阶段的主要工作也是做一些资源的回收工作。
onDestroy()当活动被系统销毁之前调用,将还没释放的资源释放,以及进行一些回收工作。
onRestart()当活动被停止以后重新打开时调用,Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。
  • 可以由以下流程图展现: 在这里插入图片描述

各方法之间的区别

onCreate()和onStart()

  • 可见与不可见的区别。前者不可见,后者可见。
  • 执行次数的区别,onCreate()方法只在Activity创建时执行一次,而onStart()在Activity的切换以及切换应用的过程中被多次调用。
  • onCreate()能做的事onStart()其实都能做,但是onstart能做的事onCreate()却未必适合做。

onStart方法()和onResume()

  • 是否在前台,onStart()中Activity可见但不在前台,不可交互,而onResume()在前台。
  • 职责不同,onStart()中主要还是进行初始化工作,而onResume()可以做开启动画和独占设备的操作。

onPause()和onStop()

  • 是否可见,onPause()时Activity可见,onStop()时Activity不可见,但Activity对象还在内存中。
  • 在系统内存不足的时候可能不会执行onStop(),因此程序状态的保存、独占设备、动画的关闭以及一些数据的保存最好在onPause()中进行,但要注意不能太耗时。

onStop()和onDestroy()

  • onStop()阶段Activity还没有被销毁,对象还在内存中,此时可以通过切换Activity再次回到该Activity,而onDestroy()阶段Acivity被销毁

切换Activity时各方法的执行次序

  • (A)onPause()→(B)onCreate()→(B)onStart()→(B)onResume()→(A)onStop()
  • 不是(A)onPause()→(A)onStop()→(B)onCreate()→(B)onStart()→(B)onResume()
  • 一个Activity或多或少会占有系统资源,而在官方的建议中,onPause()将会释放掉很多系统资源,为切换Activity提供流畅性的保障,而不需要再等多两个阶段,这样做切换更快。
  • 按照生命周期图的表示,如果用户在切换Activity的过程中再次切回原Activity,是在onPause()后直接调用onResume()的,这样比onPause()→onStop()→onRestart()→onStart()→onResume()要快得多。

Intent

Service

Broadcast

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值