서버 연결을 유지하는 데 사용되는 스레드가 있습니다. 사용자가 앱의 서비스에서 로그 아웃하면 (앱을 종료하지는 않지만) 스레드를 종료하고 실제로 사라 졌는지 확인해야합니다. 서서히 말하면, 서버에 대한 연결은 긴 폴 (a.k.a, 코멧 아키텍처)을 통해 수행됩니다. "인터럽트"를 사용하여 스레드를 종료하면 서버에 대한 기본 연결이 계속 수행됩니다. 스레드는 항상 메모리에 남아 있습니다. 소켓을 강제로 닫을 방법이없는 것 같습니다.Android : 소켓 연결로 스레드 종료
사용자가 로그 아웃 한 후 바로 로그인하면 서버에 새로운 연결이 설정됩니다. 그러나 소켓이 해제되지 않아 이전 연결은 여전히 활성 상태입니다. Android에 설정> 응용 프로그램> 응용 프로그램 관리로 이동하여 응용 프로그램을 닫고 다시 시작하면 연결 스레드가 실제로 종료되고 서버에 다시 연결하는 데 문제가 없음을 발견했습니다.
로그 아웃 한 후 스레드를 종료하는 방법이있어 실제로 강제 종료 될 수 있습니까? System.GC()를 사용하면 도움이되지 않습니다.
미안하지만 나는 HttpClient를 사용하고 있다는 것을 지적하지 못했습니다. 따라서 소켓에 직접 액세스 할 수 없습니다. httpClient.getConnectionManager(). shutdown()을 사용하여 시도했지만 도움이되지 않았습니다. – AndroidDev
문제와 관련된 코드를 게시 할 수 있습니까? 이 스레드를 지금 어떻게 닫으려고합니까? – Jack