文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android中Activity生命周期调用的示例分析

2023-06-22 06:03

关注

这篇文章将为大家详细讲解有关Android中Activity生命周期调用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

状态

活动存放在一个叫返回栈的一个集合,当重新打开一个Activity时,它就会出现在栈顶。当要销毁该活动时,调用finish()或back,栈顶的活动就会出栈。

运行状态:一个活动处于栈顶时

暂停状态:不处于栈顶,但仍然可见。(失去焦点,非全屏或透明的activity放置在栈顶)

停止状态:不处于栈顶,也不可见,但还是会为它保留一些变量的相关数据。(被覆盖)

销毁状态:在栈中移除(killed状态)

Android中Activity生命周期调用的示例分析

启动模式

standard模式:Activity的默认启动模式。对Activity的启动和切换没有任何限制,任何时候我们通过startActivity或startActivityForResult()启动一个standard模式的activity时,系统都会创建实例并放置到栈顶。【通过intent跳转的时候会创建新的activity实例,重复创建】

singleTop模式:设置成该模式时,任务栈的栈顶不能同时存在两个Activity的实例。但在整个栈中,可以存在多个实例。防止同一个Activity重复创建或启动多次【通过intent跳转的activity在栈顶,直接复用;若栈顶没有,重新创建】

singleTask模式:整个任务栈中只能存在该activity的一个实例。重复启动时,系统会销毁该实例之前的所有其他activity,将该activity移至栈顶。【app在启动时都会创建一个任务栈,应用内被创建的activity都会放进这个栈内。只要activity实例被创建过,再次创建时都直接复用已有实例】

singleInstance模式:该模式下的Activity都将独立存在一个任务栈下,并且不能重复创建或启动。当启动一个singleInstance模式的Activity时,系统会为应用创建一个新的前台任务栈,将Activity置于栈内。【整个Android系统中实例唯一,可以让别人的程序直接复用这个Activity】

其他时候要启动其他非singleInstance模式的Activity时,系统创建另一个前台任务栈,将非singleInstance模式的Activity按照启动顺序置于前台任务栈。将singleInstance模式的Activity所在的任务栈移至后台。之后启动任何Activity都是前后台任务栈的切换。

重复启动同一个singleInstance模式的Activity时,系统将Activity所在的任务栈切换至前台,而启动其他类型Activity,不需要切换任务栈,添加新实例即可。

操作APP时生命周期调用

点开Activity,按Home键回到主屏:onPause() , onStop()

主屏,再次点击App回到Activity:onRestart() , onStart() , onResume()

在A Activity上打开 B Activity:A onPause() , B onCreate() , B onStart() , B on Resume() , A onStop()

点击Back键:onPause() , onStop() , onDestroy()

Activity异常生命周期

异常生命周期:Activity被系统回收或当前设备的Configuration发生变化(横竖屏),导致Activity被销毁重建

Configuration发生变化导致Activity被杀死并重建

Android中Activity生命周期调用的示例分析

onSave【Restore】InstanceState():系统自动调用,配置发生变化,Activity被异常销毁,用于存储数据(时机在onStop之前)。调用onRestore,把通过onSave保存的Bundle对象作为参数传给onRestore和onCreate。正常销毁,并不会调用这两个方法。

onRestore和onCreate的区别:都可进行数据恢复。但是onRestore一旦被系统回调,其Bundle一定不为空,无需额外的判断。但onCreate会出现为空的情况,当Activity为正常启动时,Bundle就会为空,需要额外判断。

使Activity在系统配置发生变化后不重建:给Activity指定configChange属性【orientation, screenSize】。orientation对应API < 13 , screenSize 对应API > 13 。设置之后,横竖屏切换时,不会再重建,取而代之是回调onConfigurationChanged

内存不足导致低优先级的Activity被杀死 内存不足,按照一定优先级杀死目标Activity的进程来回收内存。onSave会被调用用于存储数据,在后续恢复会调用onRestore恢复数据。

关于“Android中Activity生命周期调用的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯