2016-11-21 2 views
-3

Volleyコールを使用してデータをロードしています。AsyncTaskです。また、ProgressDialogを表示するようにコーディングしました。しかし、問題はProgressDialogが表示されないことをとても速くonPreExecuteonPostExecuteで、まだ項目が数秒後に表示されていないリサイクラーのアイテムは、onPostExecuteの後にロードされます

+4

私は* ...なぜAsyncTask内バレーボールの呼び出しを使用してデータをロードしていますか*?ボレーはすでに非同期ライブラリです...マルチスレッドの基本的な流れを学んでください... *しかし、問題はonPreExecuteとonPostExecuteですので、ProgressDialogは表示されません* ...私はあなたがこのメソッドは、私を推測させます: 'new Task()。execute(); dialog.dismiss(); 'または' doInBackground'の非同期呼び出し – Selvin

+0

コードを入力してください。 –

+0

いいえ、私はonPostExecuteの下でそれを解雇しています –

答えて

1

理由あなたAsyncTaskの実行がより速く、あなたのために結果を得ることよりも(非常に高速になりますリクエスト)はおそらく、AsyncTask内部でVolleyを使用することによって、非同期タスクスレッドではなくネットワーク要求を行うためにvolleyのスレッドを使用していることでしょう。

これはそれが本当に速い実行非同期タスクのように見えるようになり、実際であなただけの別のスレッド(ボレーのスレッド)への作業を通過したときにAsyncTaskがその作業を終了し、あなたはまだ何もありませんし、ボレーは、その終了しますあなたは結果を得ます。

ソリューション:

どちらかのAndroidボレーを使用するか、volley training docsで見ることができるようにあなたがまたthis SO AsyncTask exampleを見てのそれ以来doInBackgound()の実行を確認することができますAsyncTask

の必要がないAsyncTask

を使用別のスレッドは、ボレーや別の非同期メソッドを使用する必要はありません

コメントの質問に答えて更新:

ProgressDialogとボレーの使い方は?

this otherに述べたように、それはあなたがちょうど2つのステップ持っているので、例えば

を投稿し、実際には非常に簡単です:あなたはバレーボールの要求がキュー に追加するあなたのProgressDialogを開始

  1. を;)

    //キューにリクエストを追加します。 rq.add(リクエスト);

    //initialize the progress dialog and show it 
    progressDialog = new ProgressDialog(getActivity()); 
    progressDialog.setMessage("Fetching The File...."); 
    progressDialog.show(); 
    
  2. あなたは(あなたの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(); 
         } 
    }); 
    
+0

あなたの答えをありがとう、今私はオプションがないボレーコールを使用したいと思います。だから私がそれをしているなら、どのように自分のProgressDialogを表示するのですか –

+0

@AkshayDusane私は答えを更新します – HenriqueMS

+0

@AkshayDusaneは更新された答えをチェックします – HenriqueMS

関連する問題