2

さまざまなサービスに http リクエストを送信する Android ライブラリを作成しています。現在、AsyncTask で http 要求が発生し、アプリが提供するデリゲートにコールバックして、onPostExecute メソッドで結果を取得しています。したがって、基本的に、開発者は AsyncTask の作成を気にせずに目的のメソッドを呼び出します。

ただし、これらの呼び出しを非同期で行うべきか、ライブラリを完全に同期したままにして、開発者に責任を負わせてアプリの AsyncTasks にメソッド呼び出しを配置する必要があるのか​​ 疑問に思い始めています。このようなことについてのベストプラクティスはありますか?

4

3 に答える 3

2

幅広い API を使用する複数のプロジェクトに参加した経験から、非同期 API を提供することを決定したほとんどの場合、最終的には、追加の同期 API を提供するか、古い非同期 API を新しい同期 API で廃止する必要がありました。

API を作成するときは、エンド ユーザーに関する仮定を避けるようにしています。次の記事は興味深いものだと思います (そう願っています): How to Write Good API

于 2011-07-26T18:29:26.117 に答える
1

厳密にしたい場合は、非同期タスクをライブラリに配置して、開発者が要求を非同期で実行する以外に選択肢がないようにします (これはライブラリで既に行われています)。

ただし、より柔軟にしたい場合は、開発者が非同期にするかどうかの決定を開発者に任せてください。

ライブラリの目的は、リクエストを実行して結果を取得することであり、リクエストを実行する方法ではありません。このようにして、ライブラリは開発者の希望に適合し、その逆ではありません。

于 2011-07-26T18:31:55.567 に答える
-1

ライブラリで非同期に呼び出しを行うのは良い考えだと思います。データが受信されたときに呼び出しを通知するには、要求と処理が完了した後にクラス内で呼び出す抽象メソッドをActivity定義する必要があります。Classそして、あなたを使用するユーザーはClassそのメソッドを実装する必要があり、処理が完了するとそのメソッドが呼び出されます。例えば:

    public class ProcessingClass{
        private void processData(){
             //Async processing
             .....
             onProcessComplete();
        }
        public abstract void onProcessComplete(){

        }
    }

そして、アクティビティ内で次のようなことができるとしましょう:

    private class MyProcessingClass extends ProcessingClass{
        @Override
        public void onProcessComplete(){
             //The task is complete...
             //Update UI or something like this...
        }
    }
于 2011-07-26T18:21:44.347 に答える