2014-07-05 2 views
0

저는 프로젝트 서비스에서 한 번만 시작하고 서비스 내에는 매초마다 실행되는 스레드가 있습니다.안드로이드는 서비스 중단을 위해 더 좋거나 결코 멈추지 않습니다.

그리고 몇 가지 서비스가 있습니다. 서비스를 마치면 절차를 중단하고 다른 곳에서 다시 시작합니다.

제 질문은 이러한 구조가 서비스를 위해 더 나은 이유와 그 이유는 무엇입니까?

+1

왜 서비스를 사용하지 않으면 백그라운드에서 서비스를 계속 실행합니까? 더 나은 것을 중지하고 필요할 때만 시작하십시오. – k0sh

+0

나는 그것을 사용한다. 메서드를 한 번 호출하고 종료하고 다시 수행합니다. 하지만 매번 매시간 결과가 필요합니다 – AerRayes

+0

** IntentService **를 사용해 보았습니까? 기본적으로 worker 쓰레드를 사용하기 때문에'stopSelf()'를 호출 할 필요가 없다. –

답변

0

k0sh가 말한 바는 무엇입니까? 서비스가 실행중인 경우 배터리를 사용 중입니다. 작동이 필요하지 않으면 배터리를 중지하고 배터리를 절약하십시오.

실행중인 서비스와 중지 된 서비스의 차이점은 실행중인 서비스와 중지 된 서비스의 차이가 실행중인 프로세스가 종료 될 가능성입니다. 실행중인 서비스의 우선 순위는 매우 낮습니다 (낮은 oom_adj). 안드로이드는 그것을 죽이지 않을 것이다. 실행되고 있지 않은 서비스는 소유 프로세스의 우선 순위에 영향을 미치지 않습니다. 그 과정을 계속 유지할 다른 이유가 없다면 안드로이드는 공간이 필요할 때 그것을 죽일 것이다.

결국 실행중인 서비스도 결국 수확 될 것입니다. 프로세스를 영원히 계속 실행하는 방법은 없습니다.

+0

하지만 항상 백그라운드에서 계속 실행해야합니다. – AerRayes

+1

수 없습니다. 말 그대로, 안드로이드 장치에서 항상 실행되는 것을 유지하는 것은 불가능합니다. AlarmManager –

+0

~ "** 프로세스를 영원히 계속 실행할 수있는 방법은 없습니다 **". 실제로, '자이 트 (zygote)'프로세스는 영원히 계속됩니다 ... –

관련 문제