Как рекурсивно вызвать функцию в течение заданного периода времени? - PullRequest
0 голосов
/ 05 августа 2020

Я хотел бы рекурсивно вызывать функцию run (), когда мое исключение IOException перехватывается тогда и только тогда, когда общее время выполнения для этого метода было <= 10 секунд. Я намеренно опечатал ссылку на google.com, чтобы исключение IOException всегда генерировалось и перехватывалось, но похоже на run (); метод не вызывается успешно рекурсивно. Что я здесь сделал не так? Любая помощь приветствуется, спасибо! </p>

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new Thread() {           
      
    public void run() {                                    
        Document doc;                                      
        try {                                              
            doc = Jsoup.connect("http://google.comt/").get();
          
            runOnUiThread( new Runnable()
            {
                public void run()
                {
                     // do stuff
                }
            });

        } catch (IOException e) {                          
            e.printStackTrace(); 
            if (System.nanoTime() <= 10000000000L) {    // 10 seconds
               run();                                   // RECURSIVE CALL
             }
           }
         }
       }.start
     }

1 Ответ

1 голос
/ 05 августа 2020
long startTime = System.currentTimeMillis();
while(System.currentTimeMillis() - startTime <= 10000){
  run();
}

Если вы хотите использовать наносекунды, вы можете попробовать следующее:

long startTime = System.nanoTime();
    while(System.nanoTime() - startTime <= 10000000000){
      run();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...