2017-12-16 13 views
0

私はtaks.in onPostExecuteメソッドを実行するAsynctaskを持っています。私はもう50回実行する別のAsynctaskを実行しました。今実行中のAsyncTaskの数がprogressBarに表示されます

@Override 
protected void onPreExecute() { 
    progressBar = new ProgressBar(MainActivity.this,null,android.R.attr.progressBarStyleHorizontal); 
    progressDialog = new AlertDialog.Builder(MainActivity.this, 
.... 


protected void onPostExecute(String result) { 
... 
for (Get_NIdCadastre_NIdVisitContractCadastre get : a) { 
get_List_Visit visit = new get_List_Visit(get.getNIdCadastre(), get.getNIdVisitContractCadastre()); 
visit.executeOnExecutor((AsyncTask.THREAD_POOL_EXECUTOR), NIdCadastre, NIdVisitContractCadastre); 
... 
if (progressDialog.isShowing()){ 
    progressDialog.dismiss(); 
} 

、私が欲しいpublishProgressによってdoInBackground方法でget_List_Visitタスクにタスクの数が実行されているか、そのタスクは、そのタスクを終了した示しています

private class get_List_Visit extends AsyncTask<String, String, String> { 

@Override 
    protected void onProgressUpdate(String... values) { 
    //? 

そのたびに意味あること実行している新しいタスクです私は何を表示するには、タスクの数は実行されています!

私は約AsyncTask.Status.RUNNINGを知っていますが、これを私の状況にどうやって使うことができますか? 私の英語には申し訳ありません!

どうすればいいですか? Androidのドキュメントから

答えて

0

:(。数秒、最大で )

AsyncTasksは、理想的には、短い操作に使用する必要がありますが、 長時間実行中のスレッドを維持する必要がある場合、それは非常にあります で提供されているさまざまなAPI(Executor、ThreadPoolExecutor 、FutureTaskなど)を使用することをお勧めします。

https://developer.android.com/reference/android/os/AsyncTask.html

AsyncTaskはあなたが言っているものの音から、仕事のための適切なツールではありません。あなたはVolleyを調べることをお勧めします。

AsyncTaskアプローチを主張する場合は、委任/プロトコル設計パターンを使用して実装できます。アクティビティのポストバックで、それに応じて進行状況バーを更新することができます。

+0

何ですか? Volleyはネットワーキングのためのものですが、彼がAsyncTaskでネットワークをやっているということは何も言いません – donfuxx

0

私から少し提案は1 Staticint variableと最初asyncTaskインクリメントそれの開始にを取り、resultデクリメントで、それは最終的にあなたのProgressBarvariableの現在の結果を示す.AND、ということです。

関連する問題