《Android 开发入门与实战(第二版)》——6.6节配置改变
本节书摘来自异步社区《Android 开发入门与实战(第二版)》一书中的第6章,第6.6节配置改变,作者eoe移动开发者社区 组编 , 姚尚朗 , 靳岩,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.6 配置改变
Android 开发入门与实战(第二版)
如果设备的配置改变了(定义在Resource.Configuration类中),任何显示在界面上的东西都需要更新以适应配置。由于Activity是与用户交互的主要机制,所以它也包括一些处理配置改变的特殊支持。
除非你指定了,否则配置改变(比如改变屏幕方向,语言,输入设备等)会导致你当前的Activity会销毁,并调用相应的Activity生命周期进程函数onPause(),onStop()以及onDestroy()。如果这个Activity运行在前台或者对用户可见,一旦这个实例(Activity)的onDestroy()被调用后就会马上又创建一个新的该Activity实例,并且前一个Activity实例中的onSaveInstanceState(Bundle)方法中产生的savedInstanceState也还存在。
这样做是因为任何程序资源,包括布局文件都能在任何配置值被改变的情况上被动地改变,因此唯一安全的处理配置改变的方式就是重新获取所有的资源,包括布局(layout),图片资源(drawables)以及字符资源(strings)。因为Activity必须知道怎样去保存自己的状态和重新创建自己的这种状态,所以根据新配置重新启动一个Activity是非常简便的方式。
当然,在某些特殊的情况下,我们可能希望在某些配置类型改变时绕过重新启动Activity来直接做某些应对配置值改变的情况。这个可以使用在manifest文件中配置的Activity的android:configChanges属性来做到。任何你在manifest中定义的配置类型,都会回调你当前Activity的onConfigurationChanged(Configuration)方法,而不是重新启动你的Activity。如果一个配置的改变涉及任何你不想处理的,这个Activity还是会被重新启动,而且onConfigurationChanged(Configuration)也不会被调用。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《iOS 6核心开发手册(第4版)》——2.13节秘诀:创建拉式控件
本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第2章,第2.13节秘诀:创建拉式控件,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.13 秘诀:创建拉式控件iOS 6核心开发手册(第4版)想象一下屏幕顶部有一根绳子。用力拉它,它会使铃声响起来,或者通过控件的目标—动作机制触发某类事件。例如,它可能展示一个附件视图、开始一个下载,或者开始视频播放。这个秘诀构建一个类似于丝带的控件。在交互时,该控件将会更新客户,它必须开始于“丝带”的顶部,向下拉得足够远以触发一个请求。然后,丝带将再次把自身缠绕起来,为下一次交互做准备。 图2-7显示了这个秘诀构建的控件,在这个示例中它被连接到附件视图的底部。用力拉它将使视图处于合适的位置,完成后它会从屏幕上消失。 图2-7 必须用力把丝带控件拉伸一段最短的距离,才能使之触发并重新缠绕起来。每次成功后都会给其目标—动作客户发送一条值改变消息 2.13.1 可发现性使丝带交互可发现给这个秘诀提出了一个特殊的挑战。用户也许不能立即在悬垂的红色形状与可操纵的控件之间创建连接。 开发人员Matthij...
- 下一篇
《Android 开发入门与实战(第二版)》——6.7节如何保存和恢复Activity状态
本节书摘来自异步社区《Android 开发入门与实战(第二版)》一书中的第6章,第6.7节如何保存和恢复Activity状态,作者eoe移动开发者社区 组编 , 姚尚朗 , 靳岩,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.7 如何保存和恢复Activity状态Android 开发入门与实战(第二版)之前我们提到了Activity的生命周期,也稍微了解了onPause和onStop方法,在调用了这两个方法后,Activity暂停或者停止(界面可能直接被覆盖了),但是这个Activity的实例仍然存在于内存中,并且它的信息和状态数据都不会销毁,当Activity重新回到前台后,所有的这些信息和状态又会回到和以前一样。 但是,如果系统在内存不足的情况下调用了onPause或onStop方法,Activity可能会被系统销毁,这个时候,内存中是不会存在Activity实例的,如果该Activity再次回到前台,之前的信息和状态可能无法保存,页面也就无法根据这些信息和状态回到原来的样子。为了避免这种情况,Activity中提供了onSaveInstanceState方法,这个方法接...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Mario游戏-低调大师作品
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19
- Hadoop3单机部署,实现最简伪集群