Java 安卓:倒计时闩锁不工作

Java 安卓:倒计时闩锁不工作,java,android,countdownlatch,Java,Android,Countdownlatch,下面是我使用倒计时锁存器和执行器服务的类。我从我的活动中开始测试方法。当我运行此代码时,倒计时锁不会从等待中出现 public class Test implements Tester.StartListener, Tester.StopListener, Runnable{ private CountDownLatch latch; ExecutorService executorService; Context context; ListElement lis

下面是我使用倒计时锁存器和执行器服务的类。我从我的活动中开始测试方法。当我运行此代码时,倒计时锁不会从等待中出现

public class Test implements Tester.StartListener, Tester.StopListener, Runnable{
    private CountDownLatch latch;
    ExecutorService executorService;
    Context context;
    ListElement listElement;
    int countDown;


    final String user = "palapi_android@tourmalinelabs.com";

    public Test(Context context) {
        this.context = context;
        this.listElement = listElement;
    }

    public void startTest(int nTimes) throws InterruptedException {
        this.countDown = nTimes;
        executorService = Executors.newSingleThreadExecutor();
        latch = new CountDownLatch(countDown);
        executorService.execute(this);
        latch.await();
    }

    @Override
    public void run() {
        setText("Running");
        Tester.Start(context, user, this);

    }

    @Override
    public void OnStarted() {
        Tester.Stop(context, this);
    }

    @Override
    public void OnFail( int reason ) {
        Log.d("Failure", "failed because " + reason);

    }

    @Override
    public void OnStopped() {
        setText(String.valueOf(countDown));
        countDown --;
        latch.countDown();
        if( countDown >= 0) {
            runAfterDelayInRange(new Runnable() {
                @Override
                public void run() {
                    Tester.Start(context, user, Test.this);
                }
            });
        } else {
            setText("Done");
        }
    }

    protected void setText(final String text) {
        getHandler().post(new Runnable() {
            @Override
            public void run() {
                if (listElement != null) {
                    listElement.setTestResult(text);
                }
                LauncherActivity activity = (LauncherActivity) context;
                activity.notifyDataSetChanged();
            }
        });
    }


    protected void runAfterDelayInRange(Runnable action) {
        getHandler().post(action);
    }


    private Handler getHandler(){
        return new Handler(context.getMainLooper());
    }

}

有人能告诉我我做错了什么吗?提前谢谢你

试着在它坏掉的地方调试我试着调试了。它在startTest方法中的latch.await处命中断点,然后不再移动。您可能希望在此之前放置一个断点,以便可以在run方法中进行调试。