11

Loaders over Asyncタスクの利点はありますか?また、Android搭載の携帯電話にローダを対応させる方法もあります。AndroidのAsynctaskに比べてローダーの利点は何ですか?

編集:

ここでの主な問題は、私はネイティブDB(SqlLite)を使用していないということです。開発サーバーでDBを使用する。明らかに、私はCursorLoaderをもう使用することはできません。 AsyncTaskLoaderには例がまったくありません。もしあれば、リンクしてください。

ローカルデータベースに必要なデータをロードし、CursorLoaderを使用してクエリを実行することをお勧めしますか?

+0

あなたのアプリの内部にネイティブDBを実装していないことがあります。しかし、デバイス自体(音楽、写真、連絡先、カレンダーなど)のデータをクエリしていますか?その場合は、CursorLoaderを使用することができます。 –

答えて

10

はい、ローダーは、AsyncTaskが不足していることの多くを処理するので、AsyncTaskよりも有利です。

  1. 画面方向の変更は、AsyncTaskでは困難です。以前は、構成の変更中に保持していたActivity Controlクラスを使用するまで、私はそのような問題を抱えていました。方法を知りたいなら、私はあなたにいくつかのコードを与えることができます。ただし、データ全体が読み込まれる前に方向の倍数を変更したときに、アプリケーションがクラッシュすることがありました。ここの秘密は、あなたの最初のスレッドに多くのデータをロードせず、できるだけ早くスレッド作業を終了します。バックグラウンドで起こったとしても、Androidはスレッドを手のひらで扱う方法を持っています。あなたの仕事の1つがいつ殺されるのかあなたは決して知らない。

  2. AsyncTaskLoaderを使用する場合でも、アクティビティマネージャを使用するようにしてください。これは、アクティビティとAsyncTaskをより詳細に制御するのに役立ちます。

はい、すべての古いバージョンのAndroidで互換性があります。あなたは(。時間のほとんどは、これはデフォルトで含まれているが、ダブルチェックにそのいつも素敵さ)サポートライブラリを含める必要が

+0

+1 AsyncTasksが厄介になることがあります。 [this](http://blogactivity.wordpress.com/2011/09/01/proper-use-of-asynctask/)を参照してください。 – slezica

1

ローダーの方がコード作成が簡単です(ほとんどフラグメント内に組み込まれています)。 ローダー(特にCursorLoader)もあなたのカーソルを扱います(deprecated manageQueryのように)。

このlinkをチェックして、Loaders pre-Honeycombの使用方法をお読みください。

1

従来、AsyncTasksで「手作業」で行われていたライフサイクル管理の実装と処理が簡単になりました。詳細については、questionへの回答を参照してください。

Froyoでの使用に関しては、互換性ライブラリ経由で入手できます。

+0

ここでの問題は、ネイティブDBを扱っていないことです。開発サーバーからクエリを実行します。 CursorLoaderを使ってどのように可能ですか? – Hick

+0

ちょうどあなたの質問を更新したことに気付きました。ここでAsyncTaskLoaderの例を見てみてください。http://developer.android.com/reference/android/content/AsyncTaskLoader.html – Kingamajick

0

ローダーのもう1つの利点は、asynctaskが問題を引き起こす可能性がある一方で、画面の回転イベントを正常に処理することです。

0

最大の差分:

CursorLoaderContentProviderその関連するとすぐにあなたのUIのコンテンツを更新しますそのコンテンツを変更すると(Serviceなど)、AsyncTaskはあなたのUIを更新するだけです。

1

ローダーの短所について誰も話していないようです。私は現在、バックグラウンドで他のサービスを実行するシステムに取り組んでいます。

私が気づいたことは、ローダーが表示された画面が再開されるとすぐに表示されることです。ローダーによって使用されるカーソルは、DBをロックアップします。

sqliteのgetDatabaseWriterは実際には同期メソッドなので、ローダーがリセットまたは終了するまでローダーによって使用されるカーソルが決して閉じられないため、DBへのアクセスがロックされます。

このような状況でローダーを使用することはお勧めできません。結果セットが静的で変更されないような100個未満のアイテムで構成されている場合は、ローダーを使用してアドバイスできません。

関連する問題