마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트뷰 안에 프로그레스바 개별로 달았을때 문제

0 추천

안녕하세요

 

다름이 아니라 listview  adapter에 getview일때

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView == null) {
        convertView = inflater.inflate(R.layout.item_call, parent, false);
    }
ProgressAsyncTask task  = new ProgressAsyncTask(mActivity,progressBar,position,mHandler,call);
task.execute("");

이런식으로 스레드를 돌렸습니다 리스트마다 하나씩 프로그레스바를 처리하기위해서요.

그런데 문제는 

2개이상일때 1개가 처리가 끝나야 그다음꺼가 실행됩니다.

 

@Override

    protected String doInBackground(String... params) {
        try{
            while(progressBar.getProgress()>0){
                Thread.sleep(100);
                progressBar.setProgress(progressBar.getProgress() - 1);
                if(mActivity.callList.size()>position){
                    mActivity.callList.get(position).setProgessCount(progressBar.getProgress());
                }

//                publishProgress("");
            }
        }catch(Exception e){
            ;
        }
        return position+"포지션";
    }

왜이런지 아시나요 

흠바바 (640 포인트) 님이 2015년 7월 21일 질문

1개의 답변

0 추천
asynctask 가 2.x 이상 부터는 main thread 내부에서 동작하기 때문에 다수개를 동시에 실행해도 순차적으로 처리하도록 변경되서 그렇습니다.

별도로 실행 시키기 위해서 executeonexecutor 으로 실행 하세요
http://developer.android.com/reference/android/os/AsyncTask.html#executeOnExecutor(java.util.concurrent.Executor, Params...)
aucd29 (218,390 포인트) 님이 2015년 7월 22일 답변
...