2012-10-18 17 views
7

Czy ktoś już wcześniej miał taką sytuację? Wymuszam zatrzymanie aplikacji w oknie ustawień na urządzeniu z Androidem. Ale kiedy używam polecenia ps przez adb, nadal jest ono wyświetlane na ekranie. Ale ten proces nie może zostać uzyskany przez activityManager.getRunningAppProcesses(). Ten proces istnieje nawet po odinstalowaniu tej aplikacji. Stało się to losowo.Jak zabić nieużywany proces w systemie Android?

Ponieważ otworzyłem port w mojej aplikacji przy użyciu ServerSocket, port nie może zostać zwolniony po zatrzymaniu aplikacji. Następnym razem, gdy próbowałem otworzyć moją aplikację, nie udało się jej ponownie użyć.

Używam ASUS EeePad i ten problem wydaje się mieć miejsce tylko na tym urządzeniu.

Nawiasem mówiąc, procesu nie można uzyskać za pomocą narzędzi innych firm, takich jak menedżer procesów. Ale naprawdę istnieje z pid, gdy używam ps przez adb shell do listy wszystkich procesów.

+0

czego próbowałem .. –

+3

można udostępnić (kopiuj/wklej) wyjście -aux ps? Może to być problem z użytkownikiem lub coś związanego z integracją Linux/Android. – tazzix

+1

Czy możesz udostępnić więcej informacji? Czy zwolniłeś port (zamknął gniazdo) wewnątrz nadpisania metody onDestroy()? – Genry

Odpowiedz

0

Ponieważ nie ma kodu .. oto kilka podpowiedzi:

1-ty zamknąć połączenie ??? to będzie główny powód, dla którego port będzie zajęty.

2 - bezpieczniej obchodź się z gniazdem, gdy aplikacja będzie zatrzymywać, zatrzymywać się lub ulegać zniszczeniu .. możesz pominąć tryb onpause, onstop lub ondesotry .. i zwolnić port przed zamknięciem aplikacji.

3- nawiąż połączenie w oddzielnym wątku i zaimplementuj zegar, aby sprawdzić, czy naprawdę potrzebujesz portu, czy nie (mam na myśli, czy twoja aplikacja jest żywa, czy nie) i na podstawie tego zabić/opuścić wątek (połączenie)

4- w najgorszych przypadkach .. jeśli masz kontrolę nad drugą stroną połączenia (serwer, urządzenie), spróbuj uczynić swoje rozwiązanie bardziej elastycznym, jak sprawdzenie zakresu portów, aby najpierw sprawdzić, a następnie użyj, jeśli są one dostępne.

powodzenia