0

Web サイト用の Android クライアントを設計しています。そのため、実装しなければならないさまざまなネットワーク操作がたくさんあります。サーバーでのユーザー認証または検索の例。これを行うには、いくつかのパラメーターと URL を使用して JSON 要求を REST Web サーバーに送信する必要があります。そのため、文字列パラメーターだけでなく、いくつかのデータ構造 (たとえば、LinkedHashMap) も渡す必要があります。最も正しい方法がわからない問題。はるかに私は次のことをしました:

  1. protected Boolean doInBackground(Object... param). 次に、param[0]、param [1] を別の型に変換します。やり方が悪いと思います。
  2. この目的で javatuples ライブラリを使用する:

protected Void doInBackground(Pair<String, LinkedHashMap<String, Object>>... params)

複雑すぎて冗長なコードのようです。そして、私が追加しなければならない最も重要なことは、

@SuppressWarnings("unchecked")

または、タイプ セーフの警告が表示されました。

だから、何人かの専門家がこれを手伝ってくれて、最も正確で効率的な方法をアドバイスしてくれるかもしれません.

4

3 に答える 3

2

Asynctask 用の独自のコンストラクターを作成し、これらを doinBackground で使用できるフィールドとして格納できます。

    private class Task extends AsyncTask<Void, Void, Void> {

    Task(int a, long b){
       //store a, b
    }
    @Override
    protected Void doInBackground(Void... arg) {    
    }   
  }

その後

new Task(1,2).execute();
于 2012-12-20T17:28:54.123 に答える
0

「もし私があなただったら」私AsyncTaskは私のREST Application代わりに使用しません。代わりに、AsyncTask ジョブを引き継ぐ他のデザイン パターンを考え出すことができます。失われる理由の 1 つは、bandwidthどのように発生する可能性がありますか?? おそらくデータを投稿または取得している最中にHttp Transaction 電話がかかってきた場合、あなたのアクティビティはバックグラウンドになり、OS はあなたの素敵なアクティビティを殺して をシャットダウンする可能性がありますAsyncTask

Android はバックグラウンドでのアクティビティよりも高く評価しているため、Service代わりにコンポーネントを使用できます。AsyncTask

virgilよる Google IO の古いビデオをご覧ください。

于 2012-12-20T17:24:52.350 に答える
-1

私は通常、使用するすべてのデータをカプセル化する単純なクラスを作成します。

于 2012-12-20T17:21:17.823 に答える