2012-11-09 4 views
2

비동기 작업을하고 있습니다. 비동기 작업에서 execute()을 호출하면 원하지 않는 doInBackground() 비동기 작업 방법으로 1 초가 걸립니다. 누구든지 그 시간을 줄이는 방법을 알고 있습니까?execute() 비동기 작업에서 doInBackground() 메서드를 호출하는 데 1 초가 걸립니다.

+0

기본 기능이 유용합니다. 그래서 우리는 그것을 바꿀 수 없습니다. – itsrajesh4uguys

+1

1 초 돌봐 ... 와우 나는 당신의 애플 리케이션의 성능을 가정 할 수 있습니다. –

+0

나는 그 시간이 그것의 시스템 수준으로 감소 될 수 없다고 거의 확신하지만 어떤 도움이 있는지를 알아보기 위해 노력한다 – user1479604

답변

0

이러한 사항은 시스템에 따라 다릅니다. 멀티 스레드 작업을 할 때 타이밍에 대해 아무 것도 생각지 마십시오!

어쨌든 AsyncTask가 동일한 작업을 반복적으로 수행하는 경우 인수로 Runnable을 가져 오는 ExecutorService를 사용해보십시오. ExecutorServices는 작성된 스레드를 자동으로 삭제하지 않지만이를 재사용하려고합니다. 그렇게하면 시작 시간이 단축 될 수 있습니다.

+0

Exceutor에 대한 정보를 주셔서 감사합니다. 그것은 제 두번째 생각 이었지만 그것이 도움이 될 것이라고 확신하지 못했습니다. 그 시간을 줄이는데. 어쨌든 한번해볼 께. – user1479604

0

doInBackground()으로 전화를 걸려면 1 초, 결과를 반환하려면 1 초? AsyncTask을 사용하는 이유는 UI 스레드에서보다 긴 작업을 비동기 적으로 수행하기 위해서입니다. 시간이 걸리는 작업 (예 : 1 초)을 수행하는 것이 그 이유입니다.

+0

그것의 execute()를 호출 할 때 바로 doInbackground()를 호출하기 위해 1 초가 걸립니다. – user1479604

0

대신 execute()을 사용하십시오. executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ...) 그런 식으로 ExecutorService가 필요하지 않습니다.

관련 문제