Volley
コールを使用してデータをロードしています。AsyncTask
です。また、ProgressDialog
を表示するようにコーディングしました。しかし、問題はProgressDialog
が表示されないことをとても速くonPreExecute
とonPostExecute
で、まだ項目が数秒後に表示されていないリサイクラーのアイテムは、onPostExecuteの後にロードされます
答えて
理由あなたAsyncTask
の実行がより速く、あなたのために結果を得ることよりも(非常に高速になりますリクエスト)はおそらく、AsyncTask内部でVolleyを使用することによって、非同期タスクスレッドではなくネットワーク要求を行うためにvolleyのスレッドを使用していることでしょう。
これはそれが本当に速い実行非同期タスクのように見えるようになり、実際であなただけの別のスレッド(ボレーのスレッド)への作業を通過したときにAsyncTaskがその作業を終了し、あなたはまだ何もありませんし、ボレーは、その終了しますあなたは結果を得ます。
ソリューション:
どちらかのAndroidボレーを使用するか、volley training docsで見ることができるようにあなたがまたthis SO AsyncTask exampleを見てのそれ以来doInBackgound()
の実行を確認することができますAsyncTask
の必要がないAsyncTask
を使用別のスレッドは、ボレーや別の非同期メソッドを使用する必要はありません
コメントの質問に答えて更新:
ProgressDialog
とボレーの使い方は?
this otherに述べたように、それはあなたがちょうど2つのステップ持っているので、例えば
を投稿し、実際には非常に簡単です:あなたはバレーボールの要求がキュー に追加するあなたのProgressDialog
を開始
を;)
//キューにリクエストを追加します。 rq.add(リクエスト);
//initialize the progress dialog and show it progressDialog = new ProgressDialog(getActivity()); progressDialog.setMessage("Fetching The File...."); progressDialog.show();
あなたは(あなたのOnResponse内のあなたのダイアログを閉じ)
StringRequest postReq = new StringRequest(Request.Method.POST, "http://httpbin.org/post", new Response.Listener<String>() { @Override public void onResponse(String response) { tv.setText(response); // We set the response data in the TextView progressDialog.dismiss(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(“Volly Error”,”Error: ”+error.getLocalizedMessage()); progressDialog.dismiss(); } });
あなたの答えをありがとう、今私はオプションがないボレーコールを使用したいと思います。だから私がそれをしているなら、どのように自分のProgressDialogを表示するのですか –
@AkshayDusane私は答えを更新します – HenriqueMS
@AkshayDusaneは更新された答えをチェックします – HenriqueMS
- 1. Androidリサイクラーの表示アイテムの位置
- 2. 最後にロードされたアイテム(ajax loadmore)のアニメーションのみ
- 3. Isotope.jsはロード後に列にステークされたアイテムを表示します
- 4. リストビューがonPostExecuteの後に設定されない
- 5. 新しいインテントがonPostExecute()の後に開始されない
- 6. onPostExecuteは呼び出されません
- 7. AsynTask - onPostExecuteはdoInBackgroundの前に呼び出されます
- 8. AsyncTaskのonPostExecute()が実行された後に値を返す方法は?
- 9. コレクションビューのアイテムは、デバイスローテーション後に2回表示されます。
- 10. AsyncTask - onPostExecuteの後に値をアクティビティクラスに戻す方法は?
- 11. Objective-C:UIViewControllerのTableView - データはクリック後にロードされます。
- 12. すべてのリサイクラーの表示アイテムを一度にアニメーション化する
- 13. はonPostExecuteにTextViewの値は
- 14. Android:リサイクラーの画像アイテムをスクロールして速くシャッフル
- 15. リサイクラーのストップウォッチ
- 16. Looper.loop()の後にonPostExecute()を実行しません。
- 17. Googleマップは、debug.keystoneの削除後にロードされません
- 18. リサイクラーのアイテムをクリックして表示するにはどうすればいいですか?
- 19. 画面の回転後にAndroidがネストされたAsyncTaskのonPostExecuteからデータを保存します
- 20. リサイクラーのアイテムビューにデータが正しく表示されない
- 21. リサイクラーのビューのクリックアニメーション
- 22. リサイクラーの表示アイテムでこのデザインを一致させようとしています
- 23. Entity Framework - アイテムのリストがロードされていません
- 24. スクロール・ボトム・スクロール時に10個のアイテムをロードすると、テーブルビューios、swift、Firebase上にさらに多くのアイテムがロードされます
- 25. angular2でロードされたサブコンポーネントの後に実行しますか?
- 26. Segフォールト後のアイテムがSTLコンテナにプッシュされました
- 27. androidリストビューで表示されるアイテムよりも多くのアイテムをロードする
- 28. mforecastadapterがonpostexecuteメソッドでキャッチされたjava.lang.NullPointerException
- 29. エミュレータにonPostExecute()でTextviewが作成されていません
- 30. ページがロードされた後にのみjavascriptプロンプトが表示されます
私は* ...なぜAsyncTask内バレーボールの呼び出しを使用してデータをロードしていますか*?ボレーはすでに非同期ライブラリです...マルチスレッドの基本的な流れを学んでください... *しかし、問題はonPreExecuteとonPostExecuteですので、ProgressDialogは表示されません* ...私はあなたがこのメソッドは、私を推測させます: 'new Task()。execute(); dialog.dismiss(); 'または' doInBackground'の非同期呼び出し – Selvin
コードを入力してください。 –
いいえ、私はonPostExecuteの下でそれを解雇しています –