Intel官方温度监控软件:Intel Power Gadget

Intel Power Gadget是Intel官方出的一款软件,可供用户查看、记录CPU和GPU的信息,比如温度、耗电、频率、使用率等。

下载地址:https://software.intel.com/en-us/articles/intel-power-gadget

Intel Power Gadget支持macOS、Windows和Linux,但是最新版的已经不支持Windows 7系统,可以下载3.0.7版本。

intel-power-gadget.dmg

继续阅读Intel官方温度监控软件:Intel Power Gadget

测试Activity的onSaveInstanceState/onRestoreInstanceState

最近遇到一个应用崩溃问题,这个问题是由于在 ActivityonSaveInstanceState 中进行了数据的保存,然后在 onRestoreInstanceState 进行解析的时候出现崩溃。

实际测试的时候,发现当内存充足的时候,非常难稳定的诱发 ActivityonSaveInstanceState 事件。

早期的版本,可以通过 ActivityManagerNative.getDefault().setAlwaysFinish 来强制系统在 Activity 切换到后台之后,立即触发 onSaveInstanceState

参考代码如下:

但是遗憾的是,新系统比如 Android 8 等系统上,在真机环境中已经没办法通过上述的方法进行诱发了。系统会直接抛出异常,或者设置无效。

真机环境,可以尝试在 开发人员选项 中设置开启 “不保留活动” 按钮,如下图所示:

继续阅读测试Activity的onSaveInstanceState/onRestoreInstanceState

Android获取导航栏/状态栏/键盘的高度和状态

最近 Android 11 系统兼容性测试的时候,发现界面适配异常(标题栏沉浸式部分),已经无法通过网上流行的,通过反射方法获取状态栏的高度了。

于是翻了一下以前公共库里的代码,发现是使用如下代码获取状态栏高度的:

其实从 Android 9 开始,就已经对通过反射调用非公开 API 的方式进行警告了。

Android 11 以前的系统,只是给出警告, Android 11 直接抛出了调用异常。

于是搜索一下,发现网上已经更改成如下方法了:

仔细观察两个方法,会发现,其实两者都是获取了系统里的状态栏使用的某个资源的高度信息,然后作为状态栏的高度信息

这样就引发一个问题,那就是如果非官方的系统UI,比如小米,华为等自定义的UI,不使用这个资源文件,或者根本就没有这个资源文件,那么获取到的高度信息不就是不正确的了吗?

继续阅读Android获取导航栏/状态栏/键盘的高度和状态