溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

onConfigurationChanged的作用

發(fā)布時間:2020-07-10 21:13:26 來源:網(wǎng)絡(luò) 閱讀:650 作者:技術(shù)人 欄目:移動開發(fā)

onConfigurationChanged的作用

API原文說明:
android:configChanges
Lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and its onConfigurationChanged() method is called.

Any or all of the following strings are valid values for this attribute. Multiple values are separated by '|' — for example, "locale|navigation|orientation".

onConfigurationChanged的作用

All of these configuration changes can impact the resource values seen by the application. Therefore, when onConfigurationChanged() is called, it will generally be necessary to again retrieve all resources (including view layouts, drawables, and so on) to correctly handle the change.

 

在一些特殊的情況中,你可能希望當一種或者多種配置改變時避免重新啟動你的activity。你可以通過在manifest中設(shè)置android:configChanges屬性來實現(xiàn)這點。
你可以在這里聲明activity可以處理的任何配置改變,當這些配置改變時不會重新啟動activity,而會調(diào)用activity的
onConfigurationChanged(Resources.Configuration)方法。如果改變的配置中包含了你所無法處理的配置(在android:configChanges并未聲明),
你的activity仍然要被重新啟動,而onConfigurationChanged(Resources.Configuration)將不會被調(diào)用。

其次:android:configChanges=""中可以用的值:keyboard|mcc|mnc|locale|touchscreen|keyboardHidden|navigation|orientation……
Configuration 類中包含了很多種信息,例如系統(tǒng)字體大小,orientation,輸入設(shè)備類型等等.(如上圖)
比如:android:configChanges="orientation|keyboard|keyboardHidden"

 

當Configuration改變后,ActivityManagerService將會發(fā)送"配置改變"的廣播,會要求ActivityThread 重新啟動當前focus的Activity.
這是默認情況,我們不做任何處理,如果我們android:configChanges來配置Activity信息,那么就可以避免對Activity銷毀再重新創(chuàng)建,而是調(diào)用
onConfigurationChanged方法。

通過查閱Android API可以得知android:onConfigurationChanged實際對應(yīng)的是Activity里的onConfigurationChanged()方法。
在AndroidManifest.xml中添加上訴代碼的含義是表示在改變屏幕方向、彈出軟件盤和隱藏軟鍵盤時,不再去執(zhí)行onCreate()方法,
而是直接執(zhí)行onConfigurationChanged()。如果不申明此段代碼,按照Activity的生命周期,都會去執(zhí)行一次onCreate()方法,而onCreate()方法通常會在顯示之前做一些初始化工作。所以如果改變屏幕方向這樣的操作都去執(zhí)行onCreate()方法,就有可能造成重復(fù)的初始化,降低程序效率是必然的了,而且更有可能因為重復(fù)的初始化而導致數(shù)據(jù)的丟失。這是需要千萬避免的。


參考:
Android學習筆記——關(guān)于onConfigurationChanged
http://www.cnblogs.com/wisekingokok/archive/2011/10/06/2199948.html

onConfigurationChanged信息處理 監(jiān)聽屏幕旋轉(zhuǎn) 語言變換 鍵盤滑動 
http://fghzhaopai.blog.163.com/blog/static/4780555620116882211560/


向AI問一下細節(jié)
推薦閱讀:
  1. uboot的作用
  2. key的作用

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI