大部分的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后可以在任何模式下使用。