2012-10-13 3 views
0

참고 : 저는 프로가 아니므로 쉽게 해결할 수 있습니다. 지금까지 솔루션을 찾을 수 없었습니다.안드로이드 응용 프로그램의 정적 인스턴스

다음 시나리오를 참조하십시오. Android 애플리케이션이 있습니다. 주요 활동에서 클래스의 정적 인스턴스를 초기화하여 WebSockets을 통한 통신을 처리 한 다음이 정적 인스턴스를 사용하는 서비스를 시작합니다. 이제

  1. , 내가 활동을 닫을 때, 나는 (일부 웨이크 잠금) 백그라운드에서 실행 서비스, 문제가이다를 유지 해요 내가 나중에 정적 인스턴스가 가끔 남아있는 서비스를 파괴 할 때 캐시 된 프로세스 "에서 응용 프로그램을 제거 할 때까지 활성 상태입니다.

  2. 작업을 다시 시작하면 새 정적 인스턴스가 초기화됩니다.

어떻게 피할 수 있습니까?

답변

0

나중에 서비스를 파괴 할 때 "캐시 된 프로세스"에서 앱을 제거 할 때까지 정적 인스턴스가 활성 상태로 유지되는 경우가 있습니다.

이 작업을 원하지 않으면 서비스의 onDestroy()에서 중지하십시오. 또는 처음부터 정적으로 만들지 말고 서비스 자체에 포함 시키십시오.

+0

나는 여러 클래스와 서비스에서 연결을 액세스해야하기 때문에 서비스 자체에 넣을 수없는 모든 청취자를 제거하고 onDestroy()에서 연결을 닫습니다. –

+0

@ i-- : "onDestroy()에서 연결을 닫고 내가 만든 모든 수신기를 제거합니다." - "정적 인스턴스가 때때로 활성 상태로 남아있는 경우", 당신은 당신의'onDestroy()'에 버그가 있거나, 당신이 생각할 때 서비스를 멈추지 않을 것입니다. – CommonsWare

관련 문제