2

私は現在、さまざまなことを行うためにメインサーバーに複数回接続する必要がある Android プラットフォームでアプリケーションを開発しています。私は現在、サーバーへのすべての要求を別のスレッドで行うという点で、ソフトウェア設計の問題に対処しています (そうしないと、NetworkOnMainThreadExceptionが発生するため、そうすることはお勧めしません)。

したがって、私の例には3つのクラスがあります。

  • たとえば、サーバーにあるデータベースからのデータで Spinner を埋めたいリクエスタークラス。
  • DBConnection に新しい接続を実行するように要求し、それが完了するのを待って、データを適切な形式に解析する中間クラス。
  • データベースへの接続を確立し、生の文字列を取得する下位クラス。その後、解析のために中間クラスに渡されます。

サーバーへの接続ごとに、新しいスレッドを作成する必要があることはわかっています。そのため、接続を確立するクラス (下位クラス) で作成され、結果を待ちます。このようにして、ソフトウェアの最上位層に、AsyncTasks や、認識してはならないもので過負荷をかけることはありません。

問題は、データを受け取った後、それを解析しなければならないことです。また、スピナーをいっぱいにする必要があります (例のように)。

DataFromServerListener インターフェイスなどを作成するのは良い考えかもしれませんが、サーバーからのデータを処理するためのメソッドがあちこちに散らばっていると思います。一方で、すべてのトップ クラスに AsyncTask を使用して個別のスレッドを開始させる必要があり、最善の解決策ではない可能性があります。

この件に関する提案をいただければ幸いです。:D

4

2 に答える 2

0

これは私が必要としていたものの一種です。実際、これまで気にならなかった問題を解決します。 http://www.codeproject.com/Articles/162201/Painless-AsyncTask-and-ProgressDialog-Usage

于 2012-11-01T21:23:59.523 に答える
0
private class LongOperation extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {

        return "Executed";
    }      

    @Override
    protected void onPostExecute(String result) {               
    }
}
于 2012-10-23T01:52:24.693 に答える