2013-08-09 5 views
7

私はシナリオを持っており、どのパスに行くのかは分かりません。フラグメントまたは親アクティビティのasynctask?

シナリオ

アプリは種々の断片を表示するホーム活性を有します。フラグメント内のデータは、Webまたはローカルデータベースから取得し、asynctaskを使用して取得することができます。

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

  1. は、親アクティビティにAsynctaskを入れた後、フラグメントに結果を渡すためにfragment.newInstance(parameters)を使用します。しかし、私のasynctaskの中で、フラグメントの進捗状況やいくつかの情報を更新する必要がある場合は、newInstanceを新しいパラメータセットで呼び出す必要があります。

  2. フラグメントを追加して、このようにして進捗が必要な場合、フラグメントのビューを更新することができます。asynctaskが完了したときにフラグメントのビューを更新できます。情報

正しい方法はありますか?

LE:実際の点1のためのフラグメントを更新するために、私は私が親アクティビティでfindFragmentById

答えて

0

でそれを見つけた後、私は第二のアプローチとなるだろうフラグメントのパブリックメソッドを呼び出すことができます。
私の主な理由は、AsyncTaskが動作している間に画面の向きが変化する際に起こりうる問題を避けることです。あなたが要求し、何をキャンセルしたいしているものへのよりよい制御を持っているでしょう http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/

:あなたは複数のタスクを持っている場合

+0

ありがとうございました。アプリの縦向きしかない場合は? – Alin

+1

更新する必要があるビューがFragmentで宣言されている場合は、AsyncTaskをフラグメントにも置くことは意味があります。 "関連するものをまとめて"。 –

+0

実際には、AsyncTaskをフラグメントで宣言する必要はありません。独自のファイルで宣言することもできますが、そのアイデアはフラグメントから開始することになります。 –

1

良い方法はIntentServiceを使用することです。

0

私は方法2に行くだろうが、それ以上のステップを取る。

非同期タスクを実行するための別の断片があります。これにより、画面の回転だけでなく、設定の変更も問題なく処理できます。

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

関連する問題