位置: 编程技术 - 正文

掌握Activity 的生命周期(Lifecycle)(activity的作用和生命周期)

编辑:rootadmin
Activity 的生命周期(Lifecycle)

推荐整理分享掌握Activity 的生命周期(Lifecycle)(activity的作用和生命周期),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:activity有哪些,简述activity的作用,activity decide,activity的概念,activity的概念,activity有哪些,activity的作用,activity的作用和生命周期,内容如对您有帮助,希望把文章链接给更多的朋友!

在用户与App进行交互,开启APP,退出APP,按Home键回到桌面等等的时候,相关的Activity实例将会不断的切换Activity生命周期中的不同状态。

例如:当一个ActivityA首次启动到系统的前面可以跟用户进行交互的过程中,Android系统将会调用ActivityA生命周期中一系列的回调函数(onCreate()–onStar()–onResume())。当用户从ActivityA跳转到ActivityB或者打开另一个APP的时候,Android系统将会调用ActivityA中另一套相对应的函数(onPause()–onStop())。 在系统调用Activity生命周期不同方法的时候,可以编写代码让Activity表现想要的对应行为。

简单了解Activity的生命周期还是比较容易的,只需要记住用户可见的三种状态以及这三种状态在不同情况下如何进行转换的:

用户可见的三种状态Resumed

在Resumed状态的时候,Activity是直接显示在用户界面上,可以跟用户进行互动的,也说是运行时Running状态。这时候对应的Activity其实位于Activity栈顶。

Paused

当ActivityA只是被ActivityB部分遮挡的时候,ActivityA将会处于Paused状态。此时ActivityA不能接受用户任何输入,以及执行任何代码。

Stopped

在Stoped状态的话,activity认为是对用户来说完全看不到,处于系统后端。但是activity当前实例所有的状态信息都将保持在Activity堆栈中,实例并未销毁只是不执行任何代码而已。

三种状态的相互切换看图应该没问题,记住部分可见处于Paused、全部不可见处于Stopped

一些细节上需要去注意:

1、当onStart()函数被Android系统调用的时候,activity就对用户可见了,同时onResume()将会迅速被系统调用,然后一直处于Resumed状态,直到状态需要改变。比如当前Activity被ActivityB部分遮挡或activity认为是对用户来说完全看不到。

2、当你在onCreate()方法中直接调用finish()方法去结束Activity的时候,系统将会立即调用 onDestroy() 方法,不会调用onPause()和onStop().

3、When the system calls onPause() for your activity, it technically means your activity is still partially visible, but most often is an indication that the user is leaving the activity and it will soon enter the Stopped state. You should usually use the onPause() callback to:

Stop animations or other ongoing actions that could consume CPU. Commit unsaved changes, but only if users expect such changes to be permanently saved when they leave (such as a draft email). Release system resources, such as broadcast receivers, handles to sensors (like GPS), or any resources that may affect battery life while your activity is paused and the user does not need them.

掌握Activity 的生命周期(Lifecycle)(activity的作用和生命周期)

4、应该避免耗CPU的工作在onPause()中进行操作,例如写数据入数据库。因为这样会降低跳转到另一个Activity的流畅度(应该让这些操作在onStop()中进行)。

5、当Activity处于paused状态时,activity实例并未被销毁依然在内存中,当activity再次回到resumed状态过程中,不需要再去初始化组件,暂停的实例对象将会被调用。

6、在极端的情况下,系统将不调用activity的onDestroy()函数,直接kill掉app的进程。因此调用onStop()方法去释放一些容易造成内存泄漏的资源是很有必要的。

7、 当Activity被Stopped的时候,Activity对象还是在内存中的,因此Activity再次回到resumed状态时不必再去初始化组件。并且系统将会保存好各在当前Activity的layout中的View 的状态。但是当调用onStop()的时候释放的资源应该在onRestart()中重新实例化。

8、当手机屏幕旋转的时候,Activity将会被destroy和recreate。例如,当改变了屏幕的方向的时候,系统将会销毁和重建当前的Activity,因为屏幕配置已经被改变,Activity需要去加载有可能需要的资源(例如加载新的布局文件layout等)

9、当系统销毁一个Activity的时候,将会调用Activity中的onDestroy()方法。因为释放大部分资源的操作应该已经在onStop()方法中完成了,同时收到一个回调去调用onDestroy(),这个方法是最后一个机会去关闭那些容易造成内存泄漏的资源。

、当系统开始去stopActivity的时候,将会先调用onSaveInstanceState()方法(1),该方法主要是用来保存当前Activity的一些状态信息,因此可以在该方法中保存想要保存的信息,以防该Activity再次被创建。如果Activity已经被销毁,相同的实例再次被创建的时候,系统将会将在(1)中保存的状态信息传递给onCreate() 方法 (2) 和 onRestoreInstanceState() 方法 (3).

、As your activity begins to stop, the system calls onSaveInstanceState() so your activity can save state information with a collection of key-value pairs. The default implementation of this method saves information about the state of the activity’s view hierarchy, such as the text in an EditText widget or the scroll position of a ListView.

、To save additional state information for your activity, you must implement onSaveInstanceState() and add key-value pairs to the Bundle object. For example:

、Both the onCreate() and onRestoreInstanceState() callback methods receive the same Bundle that contains the instance state information.

Because the onCreate() method is called whether the system is creating a new instance of your activity or recreating a previous one, you must check whether the state Bundle is null before you attempt to read it. If it is null, then the system is creating a new instance of the activity, instead of restoring a previous one that was destroyed.

、Instead of restoring the state during onCreate() you may choose to implement onRestoreInstanceState(), which the system calls after the onStart() method. The system calls onRestoreInstanceState() only if there is a saved state to restore, so you do not need to check whether the Bundle is null:

android开发之单点触摸 相对于多点触摸,单点触摸还是很简单的。新建一个工程,先看看布局文件:RelativeLayoutxmlns:android="

Android 添加数据到本地Excel表中 由于项目需要,今天学习了一下如何将程序里的数据添加到本地的Excel表中。下面为学习笔记:先上效果图:首先,需要导入jxl.jar包到libs文件夹内。然后

Android入门--实现选择并编辑图片设置成头像 在很多时候需要更换头像或者选择图片,所以这里总结下实现选择并编辑图片然后设置成头像的方法,下面开始:整体结构如下:创建项目,命名为Choos

标签: activity的作用和生命周期

本文链接地址:https://www.jiuchutong.com/biancheng/382244.html 转载请保留说明!

上一篇:开源项目源码解析-xUtils 源码解析(开源项目怎么做)

下一篇:android开发之单点触摸(android 开发 教程)

  • 计提工资年底余额所得税处理
  • 注册税务师的报名条件、时间及考试
  • 转出未交增值税是借方还是贷方
  • 印花税购销合同减半征收政策
  • 报个税的工资表
  • 中国电子口岸证书错误
  • 企业其他综合收益减少应该怎么处理
  • 实收资本实缴需要什么手续
  • 支付给个人的佣金怎么做账务处理
  • 零食发票能抵税吗
  • 当期允许抵扣的农产品进项税额
  • 计提的费用年底要冲回吗
  • 生产车间人员工资属于什么费用
  • 企业间拆借资金是否缴税
  • 工程施工的保障措施
  • 你觉得微信提现收费合理吗?
  • 营改增后服务业账务处理
  • 个人去税务局能开什么类型的发票
  • 一般纳税人两费减免会计分录
  • 冠名发票申请要求有哪些?
  • 开发转产品好转吗
  • 增值税进项抵扣完了还上附加税吗
  • 计算机著作权登记证书
  • 取得运输单位开具的普通发票
  • 小规模应交税费有三级科目吗
  • 公司向股东借款需要股东会决议吗
  • 主营业务税金及附加包括什么
  • 生产经营所得个税表
  • 应付职工薪酬转入管理费用
  • 公司支出的消防费用
  • linux网卡lo
  • php字符串赋值
  • msxct.exe - msxct是什么进程 有什么用
  • 新买的笔记本电脑需要装系统吗
  • vscode怎么开始编程
  • win7纯净版本
  • php获取文件内容的函数
  • 退货的增值税专票怎么开
  • 买新车注意事项与提车流程
  • php7.1
  • php随机抽取
  • php获取数据
  • phpsubstr方法参数
  • 微信实现刮刮卡抽奖效果
  • 承租人经营租赁账务处理
  • 燃气管道安装费和暖气管道安装费两个的欠条怎么写
  • 企业之间的借款利息收入缴纳增值税吗?
  • wordpress怎么添加图片
  • linux mongodb配置文件
  • 房产原值是含税还是不含税
  • 合并会计报表编制实例
  • 购买火车票报销,实际没乘车能查到嘛
  • 公司在银行的贷款会计分录
  • 信用卡什么情况下会被冻结
  • 什么是应收账款保理
  • 土地租金怎么做账
  • 客户火车票可以抵扣进项税吗
  • 中小企业筹资渠道和筹资方式
  • 企业明细是什么
  • mysql 生成guid
  • mac移动硬盘怎么改名
  • iTunesHelper.exe是什么进程?iTunesHelper.exe系统错误怎么解决?
  • quickres.exe - quickres是什么进程 作用是什么
  • win10edge浏览器怎么设置兼容模式
  • win7电脑总是自动安装乱七八糟的软件
  • win10正式版激活码
  • <Unity3D>Unity3D GUI控件
  • nodejs中的事件循环的执行顺序
  • linux更换用户登录命令
  • nodejs require
  • jquery并列选择器
  • python用matplot画图
  • js prototype constructor
  • python类属性和类方法
  • python抓视频保存本地
  • 江苏税务怎么在手机上办
  • 江苏税务查询授权验证码
  • 税率的分类有哪些
  • 个税申报所属期和所得期
  • 苏州市区公司可以在园区买社保吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设