2017-03-11 1 views
0

서버에서 다운로드 할 이미지가 100 개 있으며 각 크기는 거의 200kb입니다. 앱에서 이러한 목적을 달성하기 위해 Service or Intent 서비스를 만들어야 할 수도 있습니다. 나는 인 텐트 서비스가 작업자 스레드에서 실행되기 때문에이 상황에 가장 적합하다는 것을 알고있다. 하지만 내 유일한 관심사는, 내 응용 프로그램은 또한 다른 요구에 대한 다른 스레드를 시작합니다. 그래서 시간이 지나치게 많으면 성능이 저하 될 수 있습니다. 그래서 의도적 인 서비스 나 서비스를 별도의 과정으로 결정하는 딜레마에 빠져 있습니다. 별도의 프로세스를 만드는 것이 모든면에서 도움이 될 수 있습니다. 너 뭐라구?언제 안드로이드에서 별도의 프로세스를 시작 하시겠습니까?

답변

0

중요하지 않습니다. 첫 번째 멀티 스레딩 클래스를 기억한다면 모든 스레드가 동시에 작동하지 않는다는 말을들을 수도 있지만 "한 개는 잠시 실행되고 두 번째로 실행되면 다시 한 번 실행되고 세 번째로 실행됩니다"등과 같은 순서가 무작위입니다. 프로세서에 2 개의 스레드 또는 100을 사용하는 경우 문제가되지 않기 때문에 성능에는 영향을 미치지 않습니다. 그러나 먼저 다운로드 할 이미지를 기다리지 않아야하므로 사용자가 기다릴 필요가 없습니다. 느린 연결을 다운로드하려면 이미지가 너무 오래 기다려야합니다.

0

물론 인트런트 서비스는 작업 스레드에서 실행 중이며 서비스는 주 스레드에서 실행 중입니다. 당신이 서비스에서 이미지를 다운로드 할 그렇다면 당신은 여전히 ​​같은 일이 여기 그래서 새로운 스레드를 생성해야하지만 의도 서비스는 서비스를 통해 몇 가지 장점이 있습니다

1.Background thread (You no need to create Thread to download images when Service need) 

2.Automatic queuing the Intents delivered to onStartCommand(), so if one Intent is being processed by onHandleIntent() on the background thread, other commands queue up waiting their turn. 

3. the automatic shutdown of the IntentService when job done (in service you need to call stopService) 

이 약은 필요 없다 새로운 프로세스를 생성합니다. 하나의 IntentService를 만들어 이미지를 다운로드하십시오. 더 큰 데이터를 사용하면 여러 개의 스레드를 만들고 동시에 여러 부분을 다운로드 할 수 있지만 100 개의 이미지와 200kb 각각은 실제로 필요하지 않습니다.

관련 문제