7

私にはシナリオがありますが、どの道を進むべきかわかりません。

シナリオ

アプリには、さまざまなフラグメントを表示するホーム アクティビティがあります。フラグメント内のデータは、Web またはローカル データベースのいずれかから取得でき、asynctask を使用して取得されます。

私が見たものから、2つの選択肢があります:

  1. Asynctask を親アクティビティに配置し、それを使用fragment.newInstance(parameters)して結果をフラグメントに渡します。ただし、asynctask でフラグメントの進行状況または情報を更新する必要がある場合は、そのたびに新しいパラメーター セットを使用して newInstance を呼び出す必要があります。

  2. フラグメントを追加し、それに asynctask を配置します。このようにして、進行状況が必要な場合、フラグメントのビューにアクセスできるので、フラグメントのビューを更新できます + asynctask が完了すると、リストに情報を入力できます。

正しいアプローチは何ですか?

findFragmentByIdLE: 実際にはポイント 1 の場合、フラグメントを更新するために、親アクティビティでフラグメントを見つけた後、フラグメントのパブリック メソッドを呼び出すことができます

4

3 に答える 3

1

複数のタスクがある場合のより良い方法は、 IntentService を使用することです: http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/

リクエストしているものとキャンセルしたいものをより適切に制御できます。

于 2013-08-09T10:04:22.247 に答える
0

私は方法 2 を使用しますが、さらに一歩進めます。

非同期タスクを実行するための別のフラグメントを用意します。このようにして、問題なく(画面の回転だけでなく)構成の変更を処理できます。

別のフラグメントで、データを表示できます。非同期タスク フラグメントからコールバックを介してアクティビティにデータを渡し、アクティビティに表示フラグメント内のメソッドを呼び出してデータを更新させることができます。

于 2013-08-09T10:48:44.733 に答える
0

私は2番目のアプローチを使用します。
ただし、私の主な理由は、AsyncTask の動作中に画面の向きが変更されたときに発生する可能性がある問題を回避することです。

于 2013-08-09T09:34:42.363 に答える