AdbClient中“type”命令之间的延迟(monkeyrunner中不存在)

2024-09-28 21:16:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从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秒的延迟。在


Tags: pathimport命令helloworldtimeosdevice
2条回答

迭戈的根本原因分析是错误的。新的外壳连接没有那么贵。最耗时的是启动一个新的java进程,因为device.type()正在执行adb shell input text,而{}是一个控制台java应用程序。在

Monkeyrunner更快,因为它的设备端java进程只启动一次。所以不幸的是,持久的shell连接不会对您有太大帮助。在

我还尝试过将java运行时从Dalvik切换到{},希望这能帮助java应用程序的启动时间。它确实减少了20%左右(我试过的那台机器从0.82秒降到了0.65秒)。在

命令之间出现延迟的原因是adbclient主要使用shell连接来发送它们。此外壳连接未保持打开状态。monkeyrunner使用套接字向monkey发送命令,因此命令之间的延迟最小。 adbclient可以重复使用打开的shell连接,或者打开socket到{}来做monkeyrunner。在

这并不难实现,但在路线图中还没有。不管怎样,补丁总是受欢迎的。在

另一方面,对于其他最常见的情况,adbclient要快七倍:http://dtmilano.blogspot.ca/2013/09/androidviewclientculebra-takesnapshot.html

相关问题 更多 >