2016-10-26 11 views
-1

と呼ばれていない私はonCreateでこのGetAllUsers();を持っていると私は、このonProgressUpdateがアンドロイド

private void GetAllUsers() { 
    (new LoadingUsers(this)).execute(); 
} 

は、それから私は、私は内部builderSingle = new AlertDialog.Builder(MainActivity.this);を入れたかったこの

private class LoadingUsers extends AsyncTask < Void, Integer, String > { 
 
    String TAG = getClass().getSimpleName(); 
 
    AlertDialog.Builder builderSingle; 
 
    ArrayAdapter <String> arrayAdapter;@ 
 
    SuppressWarnings("unused") 
 
    Context mContext; 
 

 
    public LoadingUsers(Context context) { 
 
    super(); 
 

 
    mContext = context; 
 

 
    } 
 

 
    protected void onPreExecute() { 
 
    //   prgDialog.show(); 
 
    //   builderSingle = new 
 
    Log.d(TAG + " PreExceute", "On pre Exceute......"); 
 
    } 
 

 
    protected String doInBackground(Void...arg0) { 
 

 
    Log.d(TAG + " DoINBackGround", "On doInBackground..."); 
 
    return null; 
 
    } 
 

 
    protected void onProgressUpdate(Integer...a) { 
 
    super.onProgressUpdate(a); 
 
    Log.d(TAG + " onProgressUpdate", "You are in progress update ... " + a[0]); 
 

 

 
    } 
 

 
    protected void onPostExecute(String result) { 
 
    //   prgDialog.hide(); 
 
    Log.d(TAG + " onPostExecute", "" + result); 
 

 

 
    MainActivity.this.pd.dismiss(); 
 
    } 
 
}

を持っていますprotected void onProgressUpdate(Integer... a) {AsyncHttpClient client = new AsyncHttpClient();ですが、残念ながらonPro gressUpdateはまったく呼び出されません。ログは表示されないので、私はこれを知っています。他のすべてのlogは、私が持っているにも

@ 
Override 
protected void onDestroy() { 
    super.onDestroy(); 
    Log.i(TAG, "On Destroy ....."); 
} 

@ 
Override 
protected void onPause() { 
    super.onPause(); 
    Log.i(TAG, "On Pause ....."); 
} 

@ 
Override 
protected void onRestart() { 
    super.onRestart(); 
    Log.i(TAG, "On Restart ....."); 
} 

@ 
Override 
protected void onResume() { 
    super.onResume(); 
    Log.i(TAG, "On Resume ....."); 
} 

@ 
Override 
protected void onStart() { 
    super.onStart(); 
    Log.i(TAG, "On Start ....."); 
} 

@ 
Override 
protected void onStop() { 
    super.onStop(); 
    Log.i(TAG, "On Stop ....."); 
} 

OnStartOnResumeが同様にログされていonProgressUpdate除いて示しています。

なぜonProgressUpdateが呼び出されていないのですか? onProgressUpdatedを正しく呼び出す方法は?

Update

onProgressUpdate

onPostExecuteにも呼び出されるたびにpublishProgressdoInBackground内から(バックグラウンドスレッドで)と呼ばれるメインスレッド上で呼び出され

onProgressUpdate
+1

()? – Raghavendra

+1

どこでpublishProgressを呼び出していますか? –

+0

@Raghavendraは質問ですか、答えですか?私が見つけた例から、doInBackGroundで呼び出すことはありません。 –

答えて

2

されません。この機能は、使用することを選択した場合に便利なように提供されています。これは主に、あなたのタスクに何らかのループが含まれている場合に便利です。その場合は、各繰り返しでpublishProgressと呼ぶことができます。あなたのタスクが他のコードを呼び出すだけで、すべての処理がどこかで制御できなければ、publishProgress/onProgressUpdateのメカニズムは役に立たないでしょう。その場合、タスクを開始する前に不確定なプログレスバーを表示し、完了後に不確定なプログレスバーを非表示にすることができます。

+0

実際これは私がダイアログを表示して 'onPostExecute'を隠しているのですが、全く表示されません。そのため、問題は 'onProgressUpdate'にあると思ったのです –

+0

タスクがすぐに終了して、ダイアログが表示されませんでしたか? –

+0

は、ダイアログボックスが表示されるかどうかを確認する方法はありますか?UIがアクティビティページを表示する前に長いポーズがあるので、表示されませんでした。現在の活動の内容を意味する活動ページ。 –

0

あなたのコードは、関数を以下の必要があるかもしれません。

@Override               
protected void onProgressUpdate(Integer a) { 
    super.onProgressUpdate(a); 
} 
0

private class LoadingUsers extends AsyncTask< Void, Integer, String > { 
    private ProgressDialog dialog; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     dialog = ProgressDialog.show(getContext(), null, "Loading users...", false); 
    } 

    @Override 
    protected void onProgressUpdate(Integer... values) { 
     super.onProgressUpdate(values); 
     dialog.setProgress(values[0]); 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     // Doing something in loop 
     int max = 1024; 
     for (int i = 0; i < max; i++) { 
      int percentageCompleted = i*100/max; 
      publishProgress(percentageCompleted); 
     } 
     return ""; 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
     dialog.dismiss(); 
    } 
} 

は、あなたがこのコードが何であるかを理解していなかった場合、私に教えてください非常に単純である必要があります。

0

オーバーライド代わりの機能だけをコピー過去、 使用キーワード@Override私はあなたがdoInBackGroundでpublishProgressを呼び出すために必要だと思う

関連する問題