1

这是我在我的 Android 应用程序中所做的示例

public OnClickListener onSelectBtnClicked = new OnClickListener() {
    @Override
    public void onClick(View v) {
        method1();
        method2();
    }
    private void method1() {
            Interface.API1();
        }

     private void method2() {
        Interface.API2();
    }

};

在这里,我尝试使用外部库,因此我将调用他们的 API 来完成一些工作。现在当我点击按钮时,它会调用method1然后调用method2

这里的问题是当method1被调用时,它会调用API1,API1会返回状态,但是它会在内部创建一些线程并开始一些下载任务。由于 API1 立即返回,我的程序继续执行方法 2 并开始调用 API2

我需要一种方法让我的程序等待我的 API1 完成其任务

我试过了,Thread.sleep并且wait and notify两者都不起作用,因为它停止了主线程,并且它还暂停了 API 正在创建的线程

有什么建议可以让我的程序等待或任何其他方式来实现这一点?

4

1 回答 1

0

你(图书馆)在使用AsyncTasks吗?

如果是这样,我认为您会因为不同的 API 行为而遇到问题......

从 Honeycomb 开始,线程使用单个线程池,这意味着总是只有一个线程在运行......导致以下结果,如果一个线程被阻塞,所有其他线程也被阻塞......见http://developer .android.com/reference/android/os/AsyncTask.html#executeOnExecutor%28java.util.concurrent.Executor,%20Params...%29,点“执行顺序”

为了解决这个问题,您(图书馆)将不得不AsyncTask使用THREAD_POOL_EXECUTOR...

于 2013-10-18T10:13:39.623 回答