2017-11-09 4 views
0

제가루프에서 여러 차례 또는 평행 AsyncTask를 실행

시도
for (int i=0;i<imagesURL.length();i++) 
    { 
     final JSONObject obj = imagesURL.getJSONObject(i); 
     // obj1.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,obj.getString("source")); 
     obj1.execute(obj.getString("source")).get(); 

    } 

코드

AsyncTask.THREAD_POOL_EXECUTOR

.execute.get();

그러나 asynctask는 실행을 중단시킵니다. 난 그냥이 루프를 완전히 실행하고 첫 번째 작업이 완전히 실행되면 다음 실행합니다.

오류

Process: com.dexquad.posttracker, PID: 11481 
                    java.lang.IllegalStateException: Cannot execute task: the task is already running. 
                     at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:593) 
                     at android.os.AsyncTask.execute(AsyncTask.java:551) 
                     at com.dexquad.posttracker.TimelineActivity.processUserPhotosResult(TimelineActivity.java:224) 
                     at com.dexquad.posttracker.TimelineActivity$4.onCompleted(TimelineActivity.java:181) 
                     at com.facebook.GraphRequest$5.run(GraphRequest.java:1380) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:148) 
                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                     at android.app.ActivityThreadHook.handleMain(ActivityThreadHook.java:27) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

답변

0

루프의 내부 AsyncTask의 개별 인스턴스를 만듭니다.

for(..){ 
    // 
    new MyAsyncTask().execute(obj.getString("source")); 
} 
+0

당신은 생명 구세주입니다. 그건 바보 같은 실수였습니다. –

+0

어떻게 새 MyAsyncTask()와 함께 onPost를 추가 할 수 있습니까? execute (params); –

+0

무슨 뜻인지 이해가 안됩니다. –