2

나는 viewpagerFragmentStatePagerAdapter입니다. 그리고 Fragment에 계산 프로세스가 있으므로 FragmentAsyncTask을 사용했습니다. 이 단편은 FragmentStatePagerAdapter에서로드됩니다. 조각의 스냅 코드는 다음과 같습니다.Android AsyncTask : 각 뷰 페이지 조각에 대한 비동기 작업

public void refreshView() { 
     if(asynTask == null) { 
      asynTask = new SetupTableTask(); 
     } 
     asynTask.execute(); 
    } 

    private class SetupTableTask extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      setupInitialValue(); 
      dashboradView.removeAllViews(); 
      setupTableRow(); 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      progressDialog.dismiss(); 
     } 

     @Override 
     protected void onPreExecute() { 
      progressDialog = ProgressDialog.show(getActivity(), "Dashboard", 
        " Loading...", true, false); 
     } 
    } 

문제는 4 또는 5 페이지를 빠르게 스 와이프 할 때입니다. 이 예외가 있습니다.

08-07 10:48:36.366: E/AndroidRuntime(5702): FATAL EXCEPTION: AsyncTask #2 
08-07 10:48:36.366: E/AndroidRuntime(5702): java.lang.RuntimeException: An error occured while executing doInBackground() 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at java.lang.Thread.run(Thread.java:856) 
08-07 10:48:36.366: E/AndroidRuntime(5702): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:835) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.View.requestLayout(View.java:15129) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.View.requestLayout(View.java:15129) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.View.requestLayout(View.java:15129) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.View.requestLayout(View.java:15129) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:292) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.View.requestLayout(View.java:15129) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.View.requestLayout(View.java:15129) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.view.View.requestLayout(View.java:15129) 
08-07 10:48:36.366: E/AndroidRuntime(5702):  at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:292) 

ViewPager의 조각에서 AsyncTask를 사용할 수 있습니까? 이 예외를 극복하는 아이디어? 나는 이미 Handler을 시도했다. CalledFromWrongThreadException과 같은 예외가 있습니다.

감사

답변

2

당신은 결합 또는 doInBackground 에서 제거하고 onPostExecute에 넣고 여기에 당신이 당신의 조회수

+0

예를 결합 할 수

dashboradView.removeAllViews(); 

처럼 AsyncTaskdoInBackground에서보기의 모든 종류를 제거 할 수 없습니다. 해결 됐어. 나는 지금 빨리 닦을 수있다. : D 고마워. – user1156041