問題タブ [asynctaskloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
116 参照

android - Android ローダー: データ ソースのデータ コンテンツが変更される時期と理由は?

Loader基礎となるデータソースの変更を監視し、新しいデータが利用可能になるたびにロードすることを読みました。

私の質問は、データ ソース内のデータがいつ変更されるかということです。どんな例でも大歓迎です。

  • たとえば、アプリがユーザーが入力した検索クエリを使用して検索を実行し、検索結果が配列で返されるとします。検索を 1 回実行し、検索結果が配列で受信されたので、返された配列内のこのデータが変更される可能性があるのはどのような場合Loaderですか (これは によって監視されています)。
0 投票する
0 に答える
35 参照

android - 一度に複数のカーソルローダーに通知する

asynctaskloader を使用して、DB からのリスト ビューをそれぞれ表示する 3 つのアクティビティ A、B、C を持つアプリがあります。

放送受信機での最新のアクティビティのローダーの参照を維持します。データの変更がある場合onContentChanged、対応するローダーを呼び出して更新しlistViewますが、アクティビティにいる場合、BまたはC親アクティビティのリストビューが更新されていない場合。

各ローダーの参照を個別に維持し、それぞれを呼び出すことができることは知っていonContentますが、すべてのローダーを一度に更新できるかどうか知りたいですか? loaderManager API に関連するものは何も見られませんでした。

0 投票する
0 に答える
566 参照

android - アクティビティではないクラスから getLoaderManager() を呼び出す方法は?

内部に ImageView と Textview を持つ Listview を持つフラグメントがあります。そのため、フラグメントが作成されると、データを取り込むために AsyncTaskLoader を呼び出します。onLoadFinished メソッドで、リストのアダプターを設定しました。問題は、getLoadedManager :S にアクセスできないことです。

コードは次のとおりです。これは、最初のタスクの onLoadFinishedMethod です。

アダプター:

「エントラーダ」クラス

そして 2 番目のタスク:

}

0 投票する
1 に答える
480 参照

android - アクティビティがデータをフェッチした後のフラグメントの表示

いくつかのフラグメントで必要なアクティビティでデータを取得しています。データが返されたら、フラグメントを作成します。AsyncTask を介してこれを行っていましたが、画面の回転後にデータが返されたり、アプリがバックグラウンドになったりすると、クラッシュすることがありました。

私は読んで、これに対する解決策は代わりに AsyncTaskLoader を使用することだと考えました。おそらく、アクティビティがなくなった場合はコールバックしないため、これらのエラーは解決する必要があります。しかし、「onLoadFinished 内でこのアクション (フラグメントの追加) を実行できない」ため、これは毎回クラッシュします。

これをどのように処理すればよいですか?フラグメントごとにデータを取得する必要がないようにしたいので、アクティビティはコードを配置するのに適した場所のようです。

ありがとう!

編集 1

関連するコードは次のとおりです。問題はコード自体にあるとは思いませんが、私の全体的なアプローチにもっと問題があります。例外は、私がいるときにフラグメントを作成してはならないことは明らかです。それ以外の方法でこれを行う方法がわかりません。

編集 2

私の新しい戦略は、ResultReceiver で IntentService を使用することです。onPause でコールバックを null にするので、アクティビティがヒットしてはならないときにヒットする危険がありません。これは必要以上に手間がかかるように感じますが、AsyncTask と AsyncTaskLoader には必要なものがすべて揃っているようには見えませんでした。これらのコールバック メソッドでフラグメントを作成しても、Android には問題がないようです。

0 投票する
1 に答える
1591 参照

android - ローダーのライフサイクルとは何ですか?

バックグラウンド

ランドスケープ モードをサポートすることで、アプリの改善に取り組んでいます。私がよく使うのはLoaders、より具体的にはAsyncTaskLoadersです。

ローダーを使用すると、 AsyncTaskとは対照的に、方向の変更によりアクティビティが再作成されている場合でも、バックグラウンド タスクを実行し続けることができます。

質問

ローダーのライフサイクルについてお聞きしたいです。

  1. 彼らはいつGC-edを取得しますか? それらを追跡する必要がありますか? 内部にビットマップがある場合は、できるだけ早く破棄する必要がありますか? アクティビティが実際に破棄された後にのみ GC されるのでしょうか (構成の変更によるものではありません)。
  2. 停止中の状態があることに気付きました。これで一時停止できますか?
  3. #2が当てはまる場合、それ自体のいくつかのポイントで一時停止できるローダーをどのように実装しますか?
  4. フラグメントもローダーを持つことができますか? 私が気づいたように、それは活動のためだけです。
  5. #4 が false の場合、コンテナ内のフラグメントを置き換えるナビゲーション ドロワーのデザイン パターンでローダーを使用する推奨される方法は何ですか?
  6. AsyncTaskLoader は AsyncTask (またはスレッド) のように中断できますか? そのコードと API を調べましたが、見つかりません。また、回避策を見つけようとしましたが、成功しませんでした。
  7. #6 が間違っている場合、代替手段はありますか? たとえば、ローダーが何かをロードする必要がないことがわかっている場合は、すぐに停止できます。私が考えることができる1つの方法は、停止するように指示するフラグ(おそらくAtomicBoolean)を設定し、時々この値をチェックすることです。問題は、それが使用する関数内でも追加する必要があることですが、より簡単な方法は「Thread.sleep(0)」などを呼び出すことです。
  8. ローダーのライフサイクルの説明はどこにありますか?
  9. AsyncTaskLoaders は同時に連携して動作しますか? それとも、単一のスレッドでのみ実行される AsyncTask のデフォルトの現在の動作に似ていますか?