大部分的APP都有夜間模式這個功能。最近遇到一個bug是在一臺nexus 6p上,我們的APP啟動時部分頁面就顯示為夜間模式,但是客戶端內的夜間模式開關并未開啟。
從android資源文件夾命名規則可以看到,android 8以上,如果命名了night屬性文件夾,那么app啟動時就會根據當前系統UiMode進行自動設置。本次bug的原因就是該設備系統的UiMode值為MODE_NIGHT_YES(表示夜間模式),而app里又有color-night的屬性文件夾。
注:UiMode可以通過UIModeManager.setNightMode進行設置。但是在api23以下,
void setNightMode (int mode)
只有當設備處于汽車或桌面模式時才能使用,在api23后可以在任何模式下使用。