2012-10-18 9 views
7

Bekommt jemand diese Situation vor? Ich erzwinge das Stoppen einer App im Einstellungsdialog auf einem Android-Gerät. Aber wenn ich ps Befehl über adb verwende, wird es immer noch auf dem Bildschirm angezeigt. Aber dieser Prozess kann nicht durch activityManager.getRunningAppProcesses() bekommen werden. Dieser Prozess existiert sogar, nachdem ich diese App deinstalliert habe, geschah es zufällig.Wie tötet man einen nicht laufenden Prozess in Android

Da ich einen Port in meiner App mit ServerSocket geöffnet habe, kann der Port nicht freigegeben werden, nachdem ich meine App beendet habe. Das nächste Mal, als ich versuchte, meine App zu öffnen, konnte dieser Port nicht erneut verwendet werden.

Ich benutze ein ASUS EeePad und dieses Problem scheint nur auf diesem Gerät passiert.

Übrigens kann der Prozess nicht von irgendwelchen Drittanbieter-Tools wie Prozessmanager abgerufen werden. Aber es existiert wirklich mit einem pid, wenn ich ps über adb shell verwende, um alle Prozesse aufzulisten.

+0

was Sie versucht haben .. –

+3

können Sie (copy/paste), um die ps -aux Ausgang teilen? Es könnte ein Benutzerproblem sein oder etwas mit der Linux/Android-Integration zu tun haben. – tazzix

+1

Können Sie mehr Informationen teilen? Haben Sie den Port (den Socket geschlossen) innerhalb der onDestroy() Methodenüberschreibung freigegeben? – Genry

Antwort

0

Da es keinen Code ist .. hier sind einige Hinweise:

1-do schließen Sie Ihre Verbindung ??? Das wird der Hauptgrund sein, den Hafen beschäftigt zu halten.

2-Deal mit Steckdose sicherer, wenn Ihre App zu pausieren, zu stoppen, oder zerstört werden .. Sie können onpause, onstop oder onodesotry .. überschreiben .. und den Hafen frei, bevor Sie die App schließen.

3-Verbindung in einem separaten Thread und implementieren Sie einen Timer, um zu überprüfen, ob Sie den Port wirklich brauchen oder nicht (ich meine, wenn Ihre App lebt oder nicht) und basierend auf dem kill/thread (Verbindung)

4- im schlimmsten Fall .. wenn Sie Kontrolle über die andere Seite der Verbindung (Server, Gerät ..) versuchen, um Ihre Lösung flexibler zu machen, wie eine Reihe von Ports zu prüfen, dann verwenden, wenn sie verfügbar sind.

Glück

Verwandte Themen