2012-12-11 4 views
0

다음 작업을 수행해야하는 시나리오가 있습니다. 1. 목록보기를 채 웁니다. 2. 매우 시간이 많이 걸리는 작업 인 데이터베이스 작업을 수행하십시오. 3. 데이터베이스 처리/작업 시간은 예측할 수없는 경우가 있습니다.listview 성능을 향상시키는 방법은 무엇입니까?

홀더 패턴을 사용하여 listView를 사용했지만, 지금은 이전보다 빠르게 작동하지만 여전히 상당한 시간이 걸립니다. 성능을 향상시키기 위해 내가 할 수있는 일은 무엇입니까? 나는 아이디어가 있지만 구현하기 좋은지 아닌지 두려워합니다. 아이디어는 AsyncTask에 데이터베이스 작업을 넣고 내 listview 만 업데이트하는 것입니다. 하지만 내 목록보기가 전적으로 데이터베이스 결과에 의존하기 때문에 그렇게하는 것이 두렵다. 그래서 내가 DB 작업을 완료했을 때만 Listview에 뭔가를 표시 할 수 있습니다.

비동기 작업을 사용하는 것이 좋은 방법 일 수 있으며 다른 아이디어를 제안 해주십시오.

답변

0

홀더 방식을 사용하는 것이 좋습니다. 어댑터에서 항상 사용하십시오. 변환보기를 재사용하고 있는지 확인하십시오.

AsyncTask을 사용하는 것이 가장 좋습니다. 그러나 전체 작업이 완료 될 때까지 기다릴 필요는 없습니다. AsyncTask의 작동 방식을 읽어보십시오. doInBackground()AsyncTaskpublishProgress() 방법을 사용하여 데이터 목록을 일괄 처리하십시오.

예를 들어, 100 개의 행을 처리해야하는 경우 10을 처리 한 다음 publishProgress()을 수행하면 10 개의 행으로 목록이 업데이트됩니다. 다음 배치를 처리 할 때 publishProgress()으로 목록을 다시 업데이트하십시오.

+0

소리가 좋습니다. 나는 시도 할 것이고 만일 어떤 이슈가 직면하면, 나는 여기에서 되돌아 올 것이다. –

관련 문제