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 を呼び出して作業を完了させます。ボタンをクリックすると、メソッド1が呼び出され、次にメソッド2が呼び出されます

ここでの問題は、method1 が呼び出されたときに API1 が呼び出され、API1 がステータスを返しますが、内部でいくつかのスレッドが作成され、いくつかのダウンロード タスクが開始されることです。API1 はすぐに戻るので、プログラムは method2 に進み、API2 の呼び出しを開始します。

API1 がタスクを完了するまでプログラムを待機させる方法が必要です

試してみThread.sleepましwait and notifyたが、メインスレッドを停止し、APIが作成しているスレッドも一時停止するため、どちらも機能しません

私のプログラムを待たせるための提案、またはこれを達成するための他の方法はありますか?

4

1 に答える 1

0

あなた(図書館)は使っていAsyncTasksますか?

もしそうなら、APIの動作が異なるために問題があると思います...

Honeycomb 以降、スレッドは単一のスレッド プールを使用しています。つまり、実行中のスレッドは常に 1 つだけです。その結果、1 つのスレッドがブロックされると、他のすべてのスレッドもブロックされることになります。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 に答える