2012-10-18 3 views
7

아무도 전에이 상황을 만난 적이 있습니까? Android 기기의 설정 대화 상자에서 앱을 강제 종료합니다. 그러나 adb을 통해 ps 명령을 사용하면 화면에 계속 표시됩니다. 그러나이 과정은 activityManager.getRunningAppProcesses()으로는 불가능합니다. 이 응용 프로그램을 제거한 후에도이 프로세스가 존재합니다. 임의로 발생했습니다.안드로이드에서 실행되지 않는 프로세스를 죽이는 방법

ServerSocket을 사용하여 내 응용 프로그램에서 포트를 연 경우 내 응용 프로그램을 종료 한 후에 포트를 해제 할 수 없습니다. 다음 번에 내 응용 프로그램을 열려고 시도 할 때이 포트를 다시 사용하지 못했습니다.

ASUS EeePad를 사용하고 있는데이 문제는 해당 장치에서만 발생하는 것 같습니다.

그런데 프로세스 관리자와 같은 타사 도구로 프로세스를 수행 할 수 없습니다. ps을 사용하여 adb shell을 통해 모든 프로세스를 나열하면 실제로는 pid으로 존재합니다. 어떤 코드가 없기 때문에

+0

당신이 ... –

+3

당신이 (복사/붙여 넣기)는 ps -aux 출력을 공유 할 수있는 시도 무엇? 그것은 사용자 문제이거나 Linux/Android 통합과 관련된 것일 수 있습니다. – tazzix

+1

더 많은 정보를 공유 할 수 있습니까? onDestroy() 메서드 재정의 내에서 포트를 해제 했습니까 (소켓을 닫았습니까?)? – Genry

답변

0

.. 여기에 몇 가지 힌트는 다음과 같습니다

1-않는 당신이 당신의 연결을 닫습니다 ??? 이것이 항구를 바쁘게하는 주된 이유가 될 것입니다.

앱을 일시 중지, 중지 또는 파괴 할 때 더 안전하게 소켓을 처리하십시오. 앱을 닫기 전에 onpause, onstop 또는 ondesotry를 무시하고 포트를 해제 할 수 있습니다.

분리 된 스레드에서 연결을 만들고 실제로 포트가 필요한지 여부를 확인하기 위해 타이머를 구현하고 (해당 앱이 살아 있는지 여부) 해당 스레드를 죽이거나 남겨 두는 경우 (연결)

4 최악의 경우 .. 연결의 다른 쪽 (서버, 장치 ..)을 제어 할 수있는 경우 솔루션을보다 유연하게 만들어 포트 범위를 확인한 다음 사용할 수 있는지 확인하십시오.

행운

관련 문제