android处理程序延迟for循环

时间:2015-09-27 02:53:48

标签: android multithreading runnable postdelayed

我想在循环中使用handler.postDelayed而不是Thread.sleep()。基本上我在字符串中有一系列数字,对于每个数字,我需要不同的延迟来执行特定操作。

hThread = new HandlerThread("HandlerThread");

    seqRunnable = new Runnable() {
        @Override
        public void run() {

            for (int i = 0; i < seq.length() ; i++) {

                    if (seq.charAt(i) == '0') {
                        Log.d(TAG, "seqCode: 0");

                        try {
                            Thread.sleep(1200);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                    }
                    if (seq.charAt(i) == '1') {
                        Log.d(TAG, "seqCode: 1");

                        try {
                            Thread.sleep(400);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    if (seq.charAt(i) == '2') {
                        Log.d(TAG, "seqCode: 2");

                        try {
                            Thread.sleep(1200);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                    }

                    try {
                        Thread.sleep(400);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }


            }

            if (hThread != null && hThread.isAlive())
                seqHandler.postDelayed(seqRunnable, 2400);
            Log.d(TAG, "seqCode done!");
        }
    };

虽然使用Thread.sleep()有效,但我想使用handler.postDelayed()是首选方法,但我使用它时的时间都是错误的。

非常感谢任何帮助。

0 个答案:

没有答案