2011-09-28 3 views
10

나는 별개의 일이 벌어지고있는 안드로이드 응용 프로그램을 가지고 있지만 기본적으로 모든 스레드입니다 (확실히 안드로이드 디버거 스레드입니다) 여러 애니메이션 리스너가 루프가 있습니다안드로이드 얼마나 많은 스레드가 있어야합니까?

은하고 있습니다 서로

전화 타이머가 시작된 후 항상 0으로 카운트 다운하는 카운트 다운 타이머

이제 더 많은 카운트 다운 타이머를 추가 할 필요가 있습니다. 이러한 루핑 프로세스는 몇 개나 진행될 수 있습니까? 이 특정 구현에서는 성능, 효율성 등을 염두에 두지 않습니다.

인사이트는

감사

답변

7

난 당신이 스레드의 수는 제대로 자신의 수명을 관리하는만큼, 안드로이드 응용 프로그램에서 안전하게 사용하고 "바쁜 루프"를 방지 할 수 있고, 소진 것을 알고 매우 놀랄 것입니다 발생하는 것 같아.

내가 배웠던 한가지는 언제나 5 개의 asynctasks 만 운영 할 수 있다고 확신하며, 새로운 것들을 시작하면 스스로 임의로 계속 살해되고 살해되거나 부활됩니다 ... ie if asynctask를 5 번 켜면 디버거에서 5 개의 비동기 스레드가 작동한다고 말하지만 자원 풀이 가장 오래된 죽은 asynctask를 죽이기 때문에 원하는만큼 계속 켜고 끌 수 있습니다.

+0

우수, 잘 알고 있습니다. 많은 asynctasks를 사용하는 다른 응용 프로그램에서 작업하고 있습니다. – CQM

0

내가 아는 최대 값은 없습니다. 그러나 많은 스레드가 필요 없을 가능성이 가장 높다고 말할 수 있습니다.

안드로이드의 Handler, 특히 postDelayed() 메소드를 사용하여 하나의 스레드에서 카운트 다운 리스너를 유지할 수 있습니다. 별도의 스레드에서 Looper을 시작하고 Handler을 사용하여 시간 초과를 관리합니다 (통화 대기 또는 슬립 루프 없음).

+1

어떻게 거꾸로 만들었습니까? 자신의 사용자 이름 ?? – snapfractalpop

0

카운트 다운 타이머가 스레드를 생성한다고 생각하지 않습니다. 단순히 기본 스레드의 대기열에있는 것처럼 보입니다.

모든 청취자 어쨌든 보이는 객체에 대한 (모든 청취자를 관리하는 단일 스레드)가 (물론 동일한 스레드에서 개최한다.

그래서 당신은 아마 많은 스레드 근처 어디서든 사용하지 않는 많은 스레드를 작성했다면 걱정이 될 것입니다 - 동기화를 유지하기가 정말로 어렵고 얻을 수있는 것보다 훨씬 많은 비용이들 수도 있지만 나열된 구조를 사용하면 앞으로 나아갈 것입니다. 당신이 생각하는만큼 많은 것을 배정하십시오 (값싼 장치에서 성능을 테스트하십시오)

관련 문제