Экран зависания устройства один раз с использованием теста обезьяны из приложения

Я только что сделал приложение для Android в качестве системного приложения, чтобы запустить команду обезьяны для пакета калькулятора. В моем приложении есть кнопка, и она запустит обезьяну после нажатия.

public void onClick(View v) {
  try {
        Runtime.getRuntime().exec("monkey -p com.google.android.calculator  --throttle 200 -v 10000");
      } catch (IOException e) {
       // to do something
      }
}

==> он отлично работал с касаниями = 1000, но если я увеличу до 10000, обезьяна будет работать около 1 минуты, затем экран зависнет, и я ничего не могу сделать. ==> Я пытаюсь использовать ту же команду обезьяны в оболочке Adb, и даже если увеличить количество касаний до 50000, она все еще работает нормально. Я не знаю, почему мое устройство зависает на экране и в чем разница между adb shell monkey и использованием runtime.exec.

Кто-нибудь может мне помочь? Заранее спасибо^


person Duc Nguyen    schedule 14.02.2019    source источник


Ответы (1)


Я нашел это ! буфер не может быть освобожден.

Process process;
String rd;
process = Runtime.getRuntime().exec("monkey -p com.google.android.calculator  -- 
throttle 200 -v 10000");

BufferedReader reader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
while((rd = reader.readLine()) != null){
Log.d(TAG,"ip: " + rd);
}
process.waitFor();
reader.close();

=> теперь я могу попробовать 50000 касаний.

person Duc Nguyen    schedule 16.02.2019