Повторить отложенную задачу n раз

я хочу запустить часть кода n раз с задержкой в ​​​​несколько секунд.

вот мой код:

 Runnable runnable = new Runnable() {
        @Override
        public void run() {
            Log.e("myLog","Runnable()-->Run()");
               // do a task here
        }
    };

Handler handler = new Handler();
    // loop repeating task 6 times
    for (int count = 0; count < 6; count++){
        Log.e("Log","Task loop "+count);

        handler.postDelayed(runnable, 20000);    // run task after 20 seconds
    }

Проблема: цикл for выполняет все задачи одновременно. я хочу запустить отложенную задачу одну за другой.

я нашел ответ в сообщении: - Повторить задачу с задержкой?

но это повторяет работу бесконечное количество раз.

я нашел очень близкую логику к моему вопросу: - Bukkit Delayed Task Inside a For Loop< /а>

но не выглядит актуальным для меня


person Harshit Panchal    schedule 30.03.2018    source источник
comment
Вам нужно связать задачи.   -  person Subir Kumar Sao    schedule 30.03.2018


Ответы (3)


Вы можете попробовать это,

        int n=0;
        myHandler=new Handler();
        myRunnable=new Runnable() {
            @Override
            public void run() {
                //do your task
                n++;
                if(n<=count)
                    myHandler.postDelayed(this,2000);


            }
        };
        myRunnable.run();
person Jyoti JK    schedule 30.03.2018
comment
Я не понял тебя. some api reference значит? - person Jyoti JK; 30.03.2018
comment
Как насчет того, чтобы сама java предоставила некоторый код для многократного повторения задачи с задержкой? - person Harshit Panchal; 30.03.2018

person    schedule
comment
я не могу понять, почему эти коды запускают задачу в два раза больше, чем задано, если я передам 10 в конструкторе RepeatableTask, он запустит задачу 12 раз - person Harshit Panchal; 09.04.2018

person    schedule
comment
пробовал этот код, если я использую задание runnable.run() только один раз, когда я использовал handler.postDelayed(runnable,20000), задание повторялось 4 раза, а затем останавливалось - person Harshit Panchal; 30.03.2018