1

私にとって、jsonデータをダウンロードしてListViewに表示するのに適切なワークフローを理解するのは困難です。現在、AsyncTaskを使用して、ArrayAdapterを使用して表示されるデータをダウンロードして解析しています。問題は、AsyncTaskがアクティビティの再起動まで存続しないことです。

だから私はサービスがより良い解決策であるかどうか疑問に思っていますが、ArrayAdapterにデータを渡す方法は?データを保存および取得するための中間層として常にdbを使用する必要がありますか?

では、どちらが良いですか?dbを使用して保持されたフラグメントまたはサービスのAsyncTask?

ありがとう

4

3 に答える 3

2

私はサービスを使用してhttpデータの取得とsqliteデータベースへの保存を行います。サービスがデータを保存したら(または問題がある場合)、ブロードキャストを開始します。My Fragments / Activitiesは、これらの定義されたブロードキャストをリッスンしてから、適切に動作します。

これは非常にクリーンなソリューションであり、アクティビティの分解/ローテーションなどで非同期タスク参照がリークする問題を回避できることがわかりました。

于 2012-05-23T11:23:22.740 に答える
0

最も簡単な解決策は、現在のAsyncTaskを返すonRetainNonConfigurationInstanceか、setRetainInstance(true)でFragmentを使用することです。

inCreateでAsyncTaskにアクセスできます。getLastNonConfigurationInstance

于 2012-05-23T11:23:02.333 に答える
0

実際には、アクティビティに必要なものと、サービスに再度アクセスすることなくデータを表示できる期間の要件によって異なります。

上記の問題への1つのアプローチは、サービスをヒットしてjsonデータを取得し、それをデータベースに保存することです。次に、データベースからデータをフェッチして、アクティビティに表示します。これで、必要に応じてデータを更新するサービスを実装できます。このサービスは、Webサービスにアクセスし、必要に応じてデータベースコンテンツを更新するだけです。

于 2012-05-23T11:23:11.647 に答える