从生命周期带你看android

两种情况下的activity 的生命周期
    1 正常情况下就是 oncreate onstart onresume onpause onstop ondestory,其中onstart 跟onstop 对应,onresume跟onpause对应,oncreate 跟ondestory对应,这里没什么好说的,注意一点就是当由A  activity 跳转到B activity 中的时候,是A activity 的onpuase 先执行 还是B actiity 的onresume 先执行的问题。(这里自己可以测试一下)  这里直接说结论:是A activity 的onpause 先执行,然后B activity 的onResume 执行。
  下面看android 官方文档有这么一段话:在onpause 中不能做重量级的操作,通过测试我们知道,只有当前一个activity 的打开另一个acitivity 是,生命周期执行的顺序为,前一个activity的onPause ,后activity 的oncreate,后activity onstart  onresume,前一个acitivity 的onstop ,从中不难看出原因就是,为了使后activity 尽快的显示到屏幕上,我们不要再onpause 中做耗时操作,当然如果非要做耗时操作的话也建议的onstop 中,因为这是后acitivity 已经展示到了屏幕上面了。
    
    2 异常情况下的acivity 生命周期
         1 横竖屏切换
         先说activity 异常情况,异常包括那些情况呢?最常见的就是横竖屏切换,我们知道当横竖屏切换时候会导致activity 销毁 并且重新建立。我们注意到有些情况下,当一个activity 由于转屏销毁后,重新建立的activity 的testView 等控件 跟销毁之前的acitivity 内容,相同。其实 我们注意到在activity 中oncreate 方法回掉了一个bundle 类型的参数,其实在acivity 异常情况下,会多执行一个生命周期方法 onSaveInstanceState,(它的调用时机不固定,有兴趣可以测试一下,可能在onpause 之前也可能不是) 从名字就可以看出,他的作用就是在activity 生命周期异常情况下保存状态,当activity 在恢复从新建时候,又通过onRestory 方法来重新取出 bundle 中的数据 重新回显出来。正式由于系统在再onsaveinstance  跟onrestoreinstance 方法中 默认做了一些处理,所以我们能看到前面说的那些效果。 这里要补充说的是onrestore 调用时机在onstart 之后,其实oncreate 中bundle 跟这里bundle 是一样的,我们可以选择在任意方法处理恢复数据。
    那数据有是怎么保存的呢,这里根据源码,有兴趣的可以去查看,子类的view 其实先调用父容器的saveinstancestate,去保存数据。然后逐级向上,请求父容器去保存状态,知道顶层decorView ,然后顶层decorview 不会保存数据,他又通知子容器去保存数据,可能这里对初学人来说比较绕,但是熟悉androi 朋友一看就明白在androi 中这样的典型的委托思想随处可见,比如view 测量  事件分发都是这种思路,看多了就熟悉了。
   2 系统资源不足时
    acitivity 被系统收回,就必须说一下 activity 的优先级了,
    大致分为3种
     1  前提acitivity 指正在与前台交互的activity 优先级最高
        2  非前台但是可见的activity  比如弹出一个对话框,但是没有跟用户交互
       3 后天acitity  被暂停了的activity 执行了onstop 的activity
    不知大家开发中有没有遇到,当我们调用系统相机拍照,返回时出现crash 情况,特别是用一些比较老的手机,内存小手机时候,而且也不一定每次都出现carsh ,其实这个时候就是,由于我们调用相机的时候,需要占用系统过多的资源。特别是小内存的手机,系统资源不足就回收了 不可见的activity 然后我们返回时候就出现crash 情况,针对这种情况我会后续写一篇文章 分享一下处理办法,这里不在过多描述。
 我们知道当系统配置变化时候就使activity 自动重新创建,有什么方法可以不让activity 重新创建,这样我们就不用担心由于activity 重新创建而引起的carsh 问题了。答案当然是肯定的。 这时我们可以给acitvity 配置configChanges 属性
    configChange 属性很多(大家可以自行问度娘)但是开发中 一般常用的 locale (系统的本地文字变化) keybpardHidden (键盘变化)  orientation 手机旋转屏幕。 配置了这些 activity 没有重建,onsaveinstance  onRestoreInstance 也没有重建。但是 我们发现onConfiggurationChanged 方法调用了, 这里我们就可以自行处理了。

另外除了使用bundle 保存 acitvity 信息的还,我们也可以使用fragment 来保存一些信息,特别是信息比较大的时候。后面有时间,我们会继续说说这个方法。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值