我正在从monkeyrunner切换到AndroidViewClient。它很好,因为它都是Python。但是,当发出type或press命令时,每个命令之间的延迟时间大约为1秒:
import sys
import os
import time
try:
sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
pass
from com.dtmilano.android.adb.adbclient import AdbClient, Device
device.type("hello")
# type a space
device.press('KEYCODE_SPACE', 'DOWN_AND_UP')
device.type("world")
上面monkeyrunner中的代码实际上在“press”和“type”之间没有延迟,为什么AdbClient会产生这种延迟?它不是要通过亚行的空壳吗?应该很快。。。在
注意:输入“hello”和“world”很快。只是每个类型命令之间有一个1秒的延迟。在
迭戈的根本原因分析是错误的。新的外壳连接没有那么贵。最耗时的是启动一个新的java进程,因为}是一个控制台java应用程序。在
device.type()
正在执行adb shell input text
,而{Monkeyrunner更快,因为它的设备端java进程只启动一次。所以不幸的是,持久的shell连接不会对您有太大帮助。在
我还尝试过将java运行时从},希望这能帮助java应用程序的启动时间。它确实减少了20%左右(我试过的那台机器从0.82秒降到了0.65秒)。在
Dalvik
切换到{命令之间出现延迟的原因是}来做
adbclient
主要使用shell
连接来发送它们。此外壳连接未保持打开状态。monkeyrunner
使用套接字向monkey
发送命令,因此命令之间的延迟最小。adbclient
可以重复使用打开的shell
连接,或者打开socket
到{monkeyrunner
。在这并不难实现,但在路线图中还没有。不管怎样,补丁总是受欢迎的。在
另一方面,对于其他最常见的情况,
adbclient
要快七倍:http://dtmilano.blogspot.ca/2013/09/androidviewclientculebra-takesnapshot.html相关问题 更多 >
编程相关推荐