2011-07-26 13 views
2

私はたくさんの異なるサービスにhttpリクエストを送信するAndroidライブラリを作成しています。現在のところ、AsyncTaskでhttpリクエストが発生し、onPostExecuteメソッドで結果を提供するアプリケーション提供代行者にコールバックしています。つまり、基本的に開発者は、AsyncTaskの作成を心配することなく、目的のメソッドを呼び出します。Androidライブラリー:内部で非同期のhttpリクエストを処理しますか?

しかし、これらの呼び出しを非同期で行うか、ライブラリを完全に同期状態にしてdevに責任を負わせて、アプリケーションのAsyncTasksにメソッド呼び出しを入れるかどうか疑問に思っています。このようなことに関するベストプラクティスはありますか?

答えて

-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... 
     } 
    } 
2

広いAPIといくつかのプロジェクトの一部であることの私の経験から、ほとんどの場合、どこ非同期APIを提供することにしました。最後に、追加の同期APIを提供するか、古い非同期APIを新しい同期APIで廃止する必要がありました。

私はAPIを書くとき、私はエンドユーザーのための仮定を避けようとします。 は、私はあなたが以下の面白いを見つけると思います(またはので、私は願っています):あなたが厳密になりたい場合は、開発者が非同期要求を行うこと以外に選択肢がないので、 How to Write Good API

1

は、ライブラリ内の非同期タスクを置きます(すでにあなたの図書館で行われています)。

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

私があなたの場合、ライブラリの目的は要求を行い、その要求を行う方法であり、要求を行う方法ではないため、開発者に決定を任せます。この方法では、あなたの図書館はどんな開発者の欲望にも適合し、それ以外の方法では適合しません。

関連する問題