您现在的位置是:首页 > 文章详情

《Android 开发入门与实战(第二版)》——6.6节配置改变

日期:2017-05-01点击:231

本节书摘来自异步社区《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)也不会被调用。

原文链接:https://yq.aliyun.com/articles/100568
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章