博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android7.0 分屏下 Activity 与 Fragment 生命周期(一)
阅读量:6038 次
发布时间:2019-06-20

本文共 2977 字,大约阅读时间需要 9 分钟。

      小菜前段时间整理了一篇关于[我们真的了解 Activity 与 Fragment 的生命周期吗?](https://www.jianshu.com/p/a57223d3ca10)的小博文,整理了基础版的关于 Activity 与 Fragment 的生命周期。

      后来又一次被一个大大神问到在 Android7.0 分屏情况下的生命周期时,突然蒙圈了,因此小菜准备分几个小博文整理一下 Android7.0 分屏下各生命周期的执行顺序,Demo 超级简单,只是为了测试生命周期的执行顺序。

      小菜今天整理一下**单个 Activity** 在 Android7.0 分屏下各生命周期的执行顺序。

***

小菜的测试情况如下:

1. 初始化 Activity 时的生命周期都是一致的:onCreate -> onStart -> onResume;

![001.png](https://upload-images.jianshu.io/upload_images/6187924-fd07b47e173b36e6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2. 点击手机的【任务键】,若屏幕中显示如图情况下代表手机系统支持程序的分屏,此时的生命周期为:onPause -> onStop;

![进行分屏.jpg](https://upload-images.jianshu.io/upload_images/6187924-f5052fd0b0a94ee2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![002.png](https://upload-images.jianshu.io/upload_images/6187924-d3f41cc828555a12.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3. 此时点击分屏按钮,程序默认占据整个手机屏幕的一半,此时执行的生命周期为:onDestroy -> onCreate -> onStart -> onResume -> onPause;

![屏幕一半.jpg](https://upload-images.jianshu.io/upload_images/6187924-a9c7697c2dece67a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![003.png](https://upload-images.jianshu.io/upload_images/6187924-f1f8217865e83514.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

4. 首次分屏的情况下,当前 Activity 未获取焦点,若此时点击 Activity,此时执行的生命周期为:onResume;若此时未点击 Activity 获取焦点滑动分屏分割线调整 Activity 高度时,优先执行 onResume;

![004.png](https://upload-images.jianshu.io/upload_images/6187924-19f7b45479b30bd3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

5. 分屏默认占据整个手机屏幕的一半,若调整分割线向上,此时 Activity 占据不到手机屏幕的一半,发现并没有执行生命周期;若调整分割线向下,此时 Activity 占据超过手机屏幕的一半,或直接占据整个屏幕时,此时执行生命周期顺序为:onPause -> onStop -> onDestroy -> onCreate -> onStart -> onResume;

![005.png](https://upload-images.jianshu.io/upload_images/6187924-dcf97ea886e2f6e6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

6. 分屏占据手机屏幕的一半滑动到上半部分不到屏幕一半**或**由不到屏幕到一半滑动到屏幕一半时,均不会执行基本到7大生命周期;

![小于屏幕一半.jpg](https://upload-images.jianshu.io/upload_images/6187924-59393563b8e90395.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

7. 分屏占据手机屏幕一半滑动到下半部分超过屏幕到一半**或**由不到屏幕一半滑动到超过屏幕一半时,**相反**时,执行的生命周期为:onPause -> onStop -> onDestroy -> onCreate -> onStart -> onResume;

![大于屏幕一半.jpg](https://upload-images.jianshu.io/upload_images/6187924-c7884bd46a2e155b.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![006.png](https://upload-images.jianshu.io/upload_images/6187924-1c287a91f04b7f22.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

8. 销毁 Activity 时生命周期是:onPause -> onStop -> onDestroy;分屏情况下并没有像单个 Activity 占据屏幕时退到后台,点击手机的 home 键,只是会将应用滑到顶部,此时不会执行生命周期。

***

**Tips1:** 小菜个人的理解是在少于等于屏幕一半时,调整分割线,不执行生命周期;大于等于屏幕一半时,调整分割线,Activity 会先销毁再新建。

**Tips2:** 小菜这里不再分析横屏情况下分屏周期,但是发现两个有意思的地方,一个是无论是竖屏状态下,占据屏幕的多少,切换到横屏时只会占用屏幕一半,相反由横屏切换竖屏,均占据手机屏幕一半;二是横屏情况下只有占据手机屏幕一半的情况,来回滑动无法调整进行屏幕宽度变化。而同样执行时均为先销毁再创建的生命周期 onPause -> onStop -> onDestroy -> onCreate -> onStart -> onResume。

***

转载地址:http://tllhx.baihongyu.com/

你可能感兴趣的文章
某机字长为32位,存储容量为64MB,若按字节编址.它的寻址范围是多少?
查看>>
VC++ 监视文件(夹)
查看>>
【转】keyCode对照表及JS监听组合按键
查看>>
[Java开发之路](14)反射机制
查看>>
mac gentoo-prefix安装git svn
查看>>
浅尝异步IO
查看>>
C - Train Problem II——(HDU 1023 Catalan 数)
查看>>
Speak loudly
查看>>
iOS-在项目中引入RSA算法
查看>>
[译] 听说你想学 React.js ?
查看>>
gulp压缩合并js与css
查看>>
块级、内联、内联块级
查看>>
Predicate
查看>>
[面试题记录01]实现一个function sum达到一下目的
查看>>
这个季节的忧伤,点到为止
查看>>
mysql通过配置文件进行优化
查看>>
省级网站群建设关注点
查看>>
工作第四天之采集资源
查看>>
我的友情链接
查看>>
H3CS-WLAN、H3CSE-Security认证考试
查看>>