2011-01-16 5 views
13

일부 사람들은 지속적인 서비스를 생성해서는 안된다는 견해를 알고 있습니다.영구 서비스

우리의 지식을 높이고 싶은 사람들은 이론적으로 어떻게 하나를 만들려고합니까?

저는 놀았으며 startForeground을 사용하는 서비스가 메모리 부족 상황에서 사망 함을 확인했습니다.

나는 이제 더 이상 사용하지 않으려는 액세스 권한 PERSISTENT_ACTIVITY을 보았습니다.

그럼 비밀은 무엇입니까?

답변

40

시스템 앱을 개발하는 경우에만 서비스를 영구화 할 수 있습니다. 이러한 서비스는 기본적으로 취소 할 수 없으며 "adb 쉘 dumpsys 활동"명령의 출력에서 ​​"PERS"로 레이블됩니다. 그것은 문서화가 잘되어 있지 않아서, Persistent services in Android에 대한 빠른 글쓰기를했습니다. 잘하면 사람들을 도울 것입니다.

하지만 시스템이 아닌 앱의 경우 startForeground가 가장 좋습니다.

+3

고맙습니다. - 며칠 동안 솔루션을 찾고 있습니다. StackOverflow에 시스템 개발자가 있음을 알고있는 사람들이 있습니다. –

+0

추가 참고 사항 : 지속적 플래그는 완벽하게 작동합니다. 리소스가 심각하게 부족한 경우에도 서비스가 종료되지 않습니다. –

+0

KitKat 4.4.2에 예고없이 서비스가 중단되는 버그가 있습니다. Google에서 계속 버그를 수정하면 App 위젯을 영구적으로 설정해야합니다 – AVEbrahimi

-5

OS가 서비스를 종료하지 못하게하는 방법은 없습니다.

+0

본인이 할 때 나는 100 % 정확하지 않습니다. "adb shell dumpsys activity"PERS라는 레이블이 붙은 서비스가 있습니다 ... 나는 그것이 영구적이라고 생각합니다 ... 어떻게 얻었습니까? 상표? – ekawas

+0

라벨이 의미하는 것이 무엇인지 알고 있습니까? Android는 언제든지 아무 것도 죽이지 않습니다. 어떤 것은 다른 것보다 우선 순위가 높지만, 당신은 그것을 막을 수 없습니다. 그 일을하려고하는 봉사 활동은 무엇을 유지하려고 그렇게 중요하다고 생각합니까? – Falmarri

+0

그래서 레이블이 무엇을 의미하는지 확신 할 수 없기 때문에 그것이 내가 끈기를 의미한다고 "가정"한다고 쓴 이유입니다. 그렇다면 음악을 연주하는 서비스는 무엇을합니까? 그들은 무작위로 종료되는 위험에 처해 있습니까? 나는 이것이 다시 배경 이벤트라고 생각할 것이다. – ekawas