2012-10-18 42 views
7

Qualcuno ha mai incontrato questa situazione? Faccio forza di fermare un'app nella finestra di dialogo delle impostazioni in un dispositivo Android. Ma quando utilizzo il comando ps tramite adb, viene comunque visualizzato sullo schermo. Ma questo processo non può essere ottenuto dal activityManager.getRunningAppProcesses(). Questo processo esiste anche dopo aver disinstallato questa app, è successo casualmente.Come uccidere un processo non in esecuzione in Android

Perché ho aperto una porta nella mia app utilizzando ServerSocket, la porta non può essere rilasciata dopo aver arrestato la mia app. La prossima volta che ho provato ad aprire la mia app, non è riuscito a utilizzare nuovamente questa porta.

Sto usando un EeePad ASUS e questo problema sembra essere successo solo su quel dispositivo.

A proposito, il processo non può essere ottenuto da strumenti di terze parti come il gestore processi. Ma esiste davvero con un pid quando uso ps tramite adb shell per elencare tutti i processi.

+0

quello che hai provato .. –

+3

Puoi condividere (copia/incolla) l'uscita -aux ps? Potrebbe essere un problema utente o qualcosa a che fare con l'integrazione Linux/Android. – tazzix

+1

Puoi condividere più informazioni? Hai rilasciato la porta (chiuso il socket) all'interno del metodo onDestroy()? – Genry

risposta

0

Poiché non v'è alcun codice .. ecco alcuni suggerimenti:

1-non si chiude la connessione ??? questa sarà la ragione principale per tenere occupato il porto.

2- gestire la presa in modo più sicuro quando l'app va in pausa, si ferma o viene distrutta .. è possibile ignorare onpause, onstop o ondesotry .. e liberare la porta prima di chiudere l'app.

3- effettuare la connessione in un thread separato e implementare un timer per verificare se è effettivamente necessario o meno la porta (intendo se l'app è attiva o meno) e in base a tale kill/lasciare il thread (connessione)

4- nel peggiore dei casi .. se si ha il controllo sull'altro lato della connessione (server, dispositivo ..), provare a rendere la soluzione più flessibile come fare intervallo di porte da controllare prima di utilizzare se sono disponibili.

buona fortuna

Problemi correlati