在java应用程序中使用ADB每三秒监控一次android设备状态。使用高度 adb 命令:
adb shell settings get global airplane_mode_on
adb shell settings get system system_locales
adb shell dumpsys telephony.registry
adb shell "dumpsys content | grep ^Account | grep @ | grep com.google"
adb shell getprop gsm.network.type adb shell getprop gsm.operator.alpha
adb shell settings get system screen_off_timeout
adb shell settings get global wifi_on
除了 dumpsys 命令外,回复都是一行值,每个 readline() 执行需要 200 毫秒才能完成。
“dumpsys telephony.registry”返回大约 5000 行,需要 500 毫秒。
“dumpsys content | grep ^Account ..”返回三到四行,需要 300 毫秒。
我对延迟没有任何问题,但服务器 CPU 在此期间受到严重影响。发送这些高度命令使 CPU 增加了 30%。该应用程序需要同时监控最多不同的设备,并且只要连接两个设备就会导致 100% CPU 峰值。
java 应用程序不是问题,因为我在从 DOS 提示符发送 ADB 命令时确实重现了 CPU 影响。
我尝试过但没有观察到任何好处的事情:
"adb shell "command1 && command2 && command3 .."
>adb version
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
Installed as C:\Windows\SysWOW64\platform-tools\adb.exe
Running on Windows 10.0.19045
与其每 3 秒打开 7 个终端,为什么不打开 1 个终端呢?
adb shell "settings get global airplane_mode_on && settings get system system_locales && ... && exit"