Я делаю плагин Python 2.7, который выполняет некоторые тесты на устройствах Android.
В одном из моих тестов использовалась команда adb, но на некоторых устройствах эта команда выполняет бесконечный цикл.
команда: adb shell am start -W -a android.intent.action.VOICE_COMMAND
ожидаемый результат:
Starting: Intent { act=android.intent.action.VOICE_COMMAND }
Status: ok
Activity: com.google.android.googlequicksearchbox/com.google.android.apps.gsa.velour.dynamichosts.TransparentVelvetDynamicHostActivity
ThisTime: 241
TotalTime: 659
WaitTime: 684
Complete
На большинстве моих устройств эта команда работает хорошо, но на других она зацикливается и никогда ничего не возвращает.
Я пытался вызвать эту команду в поток, но даже делая это, я не могу понять, как убить этот поток после истечения времени ожидания.
Вот то, что я уже пробовал (см. это ), но ничего из этого не работает, потому что поток заблокирован в вызове бесконечного цикла, и поэтому я не могу проверить, установлена ли переменная "end" в этот поток, ни обрабатывать событие.
Есть ли способ убить эту тему после определенного промежутка времени чем-то вроде этого? =>
endtime = time.time() + 20
t1 = MyThread(my_func, "my_args", "my_args2")
while True:
if time.time() > endtime:
end_thread(t1) # or t1.end() or idk
else:
time.sleep(1)