最近想用命令行给 0xBench 发送 intent extra, 命令行如下:
adb shell am start -n org.zeroxlab.zeroxbenchmark/.Benchmark
-ez autorun true
adb 命令 help 提示的就是用
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>
0xBench 中 org.zeroxlab.zeroxbenchmark.Benchmark.java 中接收 intent 的代码如下:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if (bundle != null) {
mAutoRun = bundle.getBoolean("autorun");
mCheckMath = bundle.getBoolean("math"); ... }我加入了一些 log, 结果让我非常吃惊
bundle.get("autorun") 的结果是: z (注意它把 -ez 认为是 -e z 了, 与adb help说明不符合)
而autorun是:null
把命令行改为
adb shell am start -n org.zeroxlab.zeroxbenchmark/.Benchmark -e autorun true
这次autorun是 "true", 注意是 String value, 而
mAutoRun = bundle.getBoolean("autorun");得到的结果还是 false
我想以后只有改0xBench源代码, 用 Boolean.valueOf() 把它矫正过来了
最后发现还是自己粗心的毛病
应该用 --ez, 而不是 -ez
在尝试使用adb命令行向0xBench发送intent extra时遇到问题,原本使用`-ez`传递boolean值,但0xBench解析时出现问题,将`-ez`解析成了`-e z`。修改命令行参数为`-e`传递`true`字符串后,intent中的值变为String类型而非Boolean。解决方法是直接在0xBench源码中使用`Boolean.valueOf()`进行转换,或者确保命令行使用正确的`--ez`格式。
2231

被折叠的 条评论
为什么被折叠?



