問題タブ [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.
android - キャッシュ付きのカスタム AsyncTaskLoader
カスタム AsyncTaskLoaders を実装する方法に関するチュートリアルがいくつかありますが、データ キャッシュの処理方法について説明しているチュートリアルは見つかりませんでした。それらのすべてで、データがロードされて配信されるだけです。
キャッシュされたバージョンのデータをすぐに返すカスタム AsyncTaskLoader を実装する方法のヒントを教えてください。同時に、データの更新を要求し、更新されたバージョンを到着するとすぐに配信します。これはローダーでも可能ですか、それとも別のメカニズムを使用する必要がありますか?
背景: データ読み込みのリクエストを受け入れ、ブロードキャストで結果を配信する IntentService があります。ArrayAdapter または CrusorAdapter からのデータを表示する UI (ListView) があります。最新の既知のバージョンのデータをすぐに表示できるようにする「キャッシュ」レイヤーが必要ですが、新しいデータが到着するとすぐに更新を発行して再表示します。
これは、即時バージョン用のダムSQLiteデータベースと新しいデータ更新用のブロードキャストレシーバーを使用して実行できますが、ローダー派生クラスIMHOのように、この「バックゴーランド」データ読み込みメカニズムを透過的にするものを優先します。
android - FragmentActivity、AsyncTaskLoader、ListFragmentは、リセット/再開時にロード/表示されませんか?
代替Titel:バックグラウンドメモリがクリアされた後に再開すると、ListFragmentコンテンツは描画されません。
これを試して、ソースをここで確認できます。これは、 GoogleデモアプリのActionBarSherlockデモアプリバージョンです。
ListFragmentを開いて、他の場所(アプリを使用した高メモリ)に移動したとき。ActivityManagerは、「もう必要ありません...」というプロセスを強制終了します。ホームボタンを長押ししてアクティビティに戻ると、リストは再ロードされますが、「アプリケーションなし」と表示されます。
この動作の原因を見つけることができません。おそらく私は盲目です。おそらくそれはバグです。私はデバッグに時間を費やしました。私の意見では、アプリケーションはロードされていますが、何かが原因でアプリケーションが表示されません。
469行目に、いくつかのデバッグメッセージを追加しました。
上記の場合、ラベルは正しく記録されますが、リストの代わりに「アプリケーションなし」が表示されます。
誰かが私に、なぜこれが起こるのか、そしてそれを修正する方法を説明できますか?
android - 他の Fragment からローダーを再起動する
そこに3つのフラグメントを持つViewPagerがあります。各 Fragment は AsyncTaskLoader を使用して、データベースからデータを取得します。ここで、フラグメント C からフラグメント A のローダーを再起動したいのですが、
結果はヌルです。各 LoaderManager には 1 つの Activity/Fragment があり、各 Fragment には独自の LoaderManager があることを読みました。私の問題を解決する良いアイデアはありますか?
Singleton-Pattern であり、Fragment を保持する GlobalLoaderManager を実装します。ViewPager は彼の Fragments を再利用したので、この Manager には各 Pager Fragment のインスタンスが 1 つしかありません。
android - カスタム AsyncTaskLoader クラスが forceLoad の呼び出しを受け入れない
これはちょっと変わった問題です。AsyncTaskLoader (互換性レベルではなく API レベル 11 をターゲットとする実際の取引) を拡張するクラスを使用して、別のアプリ コンポーネントから送信されたインテントを受信し、ローカル データベースからデータをダウンロードして応答します。メイン アクティビティの onStart メソッドで LoaderManager を使用してローダーを初期化します。
最初に起動したとき、ローダーは正常に動作します。以下は、発生する一連のイベントです。 Activity.onCreateLoader - ローダー コンストラクター - Loader.onStartLoading - Loader.loadInBackground - Activity.onLoadFinished - Loader.deliverResult
ただし、アクティビティを終了して再起動を繰り返すと、最終的には期待どおりに動作しなくなります。これは次のシーケンスになります: Activity.onCreateLoader - ローダー コンストラクター - Loader.onStartLoading - 何もない
Loader.onStartLoading 内に forceLoad の呼び出しがありますが、後者の場合は何もしていないようです。私が検索したすべての場所は、forceLoad を呼び出すことは、ローダーがその作業を開始するための防弾に近い方法であると言っているようですが、単に何もしないケースに遭遇し続けています。ローダーのプロパティは、いずれの場合も同じです (isStarted、isAbandoned、および isReset は関係なく同じ結果になります)。率直に言って、ローダーが正常に動作する場合と何もロードされない場合とで、ローダーに違いは見られませんでした。
android - 読み込みダイアログを使用した Android アプリケーション - ベスト アプローチ
私はフォーラムの新人であり、Android 開発の新人です。インターネット全体とstackoverflowを検索しましたが、問題に対する実用的な答えが得られません。私のアプリケーションへの最良のアプローチ (ハンドラー、非同期タスクなど) についての意見を知りたいです。私は持っている:
* *1 - クリックしたときにリストを表示する必要があるボタン (データは HTML 応答を解析して取得されます)
2 - リストがロードされていない間、アプリケーションは「ロード中」ダイアログを表示する必要があります。**
ボタンをクリックするとリストをロードできるようになりましたが、(インターネット接続によっては) 時間がかかり、ロード進行状況ダイアログを表示したい場合があります。AsyncTasks を実装しようとしましたが、メソッドonPostExecuteを獲得しました。ダイアログは閉じられましたが、正しいデータが含まれていたにもかかわらず、リストが UI に表示されませんでした。
誰でも最善のアプローチで私を助けることができますか? どうもありがとうございました。
android - LoaderManager のロード開始時に Fragment に通知する
インターネットからデータを取得するListFragmentとAsyncTaskLoaderがあります。ListFragmentは BaseAdapter によって埋められます。
データの読み込み中、BaseAdapterは最初の行を回転するプログレス バーで埋めます。データがロードされ、エラーが発生しなかった場合、データはListViewに入力されます。しかし、何らかのエラーが発生した場合 ( AsyncTaskLoaderにそのエラーを示すフラグがあります)、BaseAdapterは最初の行にエラー メッセージを入力します。
問題:
ロードにエラーが発生した場合、LoaderManagerは自動的にデータを再ロードしようとします (forceLoad()
呼び出されます)。これは良いことです。しかし、データがロードされていることをBaseAdapterに通知して、 BaseAdapterがエラー メッセージをプログレス バーの回転に変更できるようにする必要があります。
LoaderManagerが呼び出しているときにフラグメントを通知する簡単な方法はありますforceLoad()
か?
私のおすすめ:
ListFragment は以下のインターフェースを実装し、この ListFragment を AsyncTaskLoader のコンストラクターに渡します。
それから私は電話をかけることがonLoadingStatusChanged(true)
できloadInBackground()
ます。AsyncTaskLoader で Fragment への参照を保持すると、そのフラグメントがリークする可能性があります。onLoadingStatusChanged(false)
deliverResult(T data)
android - バックグラウンドワーカーとして-UIまたはサービスのないAsyncTaskまたはローダーまたはフラグメント
このトピックについて多くのスレッドがあることは知っていますが、次のようになります。簡単なタスクがあります。
これは非常に簡単です。私は60まで数え、UIのTextViewを更新します。メモリリークを回避し、すべてのスレッドを正しく処理する必要があるため、構成の変更(画面の回転など)を解決する必要がある場合に問題が発生します。
Android 3.0で導入され、ローダーが登場します。ローダーは、バックグラウンドスレッドで長期間の操作を処理するための好ましい方法になりました(スレッドについてそれほど注意を払う必要はありません)。しかし、私がそれを正しく理解していれば、それらはどこかからいくつかのデータをロードし、それらをアクティビティ/フラグメントに表示するための主要なものです。いくつかのWebコンテンツをダウンロードして、リストなどの形式で表示するようなものです。
編集済み:UIを使用せずにフラグメントを使用する(アクティビティが再作成されるときにRetainInstance = trueを使用する)、またはサービスとして開始するというアイデアなど、バックグラウンド作業を行う方法の他の可能性を見つけました。彼らはおそらくこれをはるかに簡単な方法で達成することができます。
私の質問は、私はAndroidを初めて使用するので、どちらに進むべきかということです。
android - null を返す AsyncTask
私はhtmlコードを解析するためにjsoupを使用しています。明らかにAsyncTaskを使用していますが、null(javanullpointerexception)を返しています。
次に、タスクを実行してドキュメントを返します。
そのドキュメントは常にnullだと思います。私のコードで何が問題になっていますか? 助けてくれてありがとう。
android - Android: フラグメントから開始すると AsyncTaskLoader がクラッシュする
私はこのフラグメントを持っています:
public class ResultFragment extends Fragment implement LoaderCallbacks{
AsyncTaskLoader は次のようになります。
public class RESTLoader は AsyncTaskLoader を拡張します {
アプリが不可解な (少なくとも私にとっては) エラーでクラッシュします。
http://i46.tinypic.com/260fw43.png
いくつかの Log.ds を入れることで、AsyncTaskLoader のコンストラクターが呼び出されていないことがわかりました。ローダーの init() をフラグメント ライフサイクルの後半に移動しようとしました。それが重要な場合、フラグメントはViewPager内にあります。AsyncTaskLoader は、Activity から呼び出されたときに正常に動作します。
私が間違っていることについてのアイデアはありますか?
android - カスタム AsyncTaskLoader、loadinBackground が 5 回の試行後に呼び出されない
カスタムをSherlockListFragment
実装する がありますAsyncTaskLoader
。オーバーライドさonStartLoading()
れた には、次のものがあります。
を含むSherlockListFragment
と、でローダーが開始されonActivityCreated
ます。
と :
問題は、FragmentActivity への 5 回のアクティベーション/ナビゲーションの後、loadinBackground()
呼び出されないことです。はonStartLoding
と同様に呼び出されますがforceLoad
、それだけです。例外はありません。LogCat には何もありません。
何か案は?