前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android onresume函数,Android界面跳转时候onDestroy和onResume的调用顺序

android onresume函数,Android界面跳转时候onDestroy和onResume的调用顺序

作者头像
全栈程序员站长
发布2022-08-22 13:58:26
1.1K0
发布2022-08-22 13:58:26
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

Android在界面跳转的时候,比如从Activity A 跳回 Activity B,并不是先执行A的onDestroy,而是执行完A的onPause之后就立即跳回Activity B里的onResume。在执行了Activity B 的onResume之后一两秒甚至更长一点的时间才执行Activity A里的onDestroy。

这样的处理机制应该是为了能够立即响应用户的操作。但是这样子的话,如果Activity A在运行前和运行后都要进行预处理和反预处理的话,便会存在问题。比如一个能播放加密视频的播放器里,如果把视频的解密操作放在onCreate里,把视频的加密操作放在onDestory里。此时Activity A便是播放视频的界面,Activity B便是播放列表/主界面。在Activity B点击相应的视频c进入到Activity A里,在onCreate里执行解密使得视频可以播放。当按返回键的时候先执行Activity B的onResume,所以在视频c加密前就跳回了Activity B的界面,因此在此时还能点击进入Activity B。假设在这个时候(Activity A的onDestroy还没被调用,但因为Activity B的onResume已运行完毕,所以可以跟Activity B交互)用户点击视频c,再次进入Activity A,则Activity A在onCreate中解密视频c(此时视频c是已经加密过的)。那么,如果加密函数不和解密函数等价的话,且二次解密不会使视频回复到原视频的话,则这个视频经过二次解密,就已经成为废视频了。

所以,对时间要求和Activity是否获取焦点密切相关的操作,不能放在onCreate和onDestroy里,而应该考虑放在onResume和onPause里。而像上述举的例子,如果是使用surfaceView来播放视频的话,也可以考虑在surfaceHolder.addCallback里的new Callback()的实现中的surfaceCreated和surfaceDestroyed两个函数里分别实现。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137352.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月5,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档