2011-08-16 17 views
6

Ho un disperato bisogno di una soluzione a questo problema, per qualche ragione su un altro dispositivo ho testato la mia app bluetooth, quando chiudo l'app (onDestroy()) e rientro le connessioni bluetooth falliscono. L'unica soluzione a questo attualmente è di spegnere e riaccendere il bluetooth per il dispositivo.app Android non rilasciando Bluetooth correttamente all'uscita

Il codice che uso è più o meno il campione bluetoothchat per Android. Creo connessioni 2 bt a un dispositivo precedentemente selezionato.

Quindi comunico avanti e indietro con queste prese utilizzando inputstream e flusso di output.

Quando la mia app viene distrutta - chiudo input e output e prese bluetooth, ho persino terminato il processo (ho trovato del codice qui) ma quando torno indietro nell'app la connessione fallisce.

Qualcuno può offrire assistenza da ciò che ho detto finora? Il mio codice è piuttosto elevato al momento, quindi non saprei cosa incollare ma la connessione bt utilizza fondamentalmente le classi dall'esempio e quindi passa questi socket creati alle altre mie classi.

Grazie in anticipo

+0

Puoi aggiungere qualche snipet di codice alla tua domanda? Soprattutto quello che stai facendo in onDestroy() e in che modo stai inizializzando il bluetooth in onCreate(). Forse dovresti farlo in onResume()/onPause() invece? – grzaks

+0

Si prega di inviare l'output logcat della connessione fallita. –

risposta

3

Il modo migliore per utilizzare OnDestroy è nella seguente maniera, spero che si sta facendo qualcosa di simile.

@Override 
protected void onDestroy() { 
    if (localBT != null) { 
    localBT.close(); 
    } 
    super.onDestroy(); 
} 
0

Come indicato da Gaks, il problema potrebbe riguardare onResume()/onPause(). Sei assolutamente certo che la tua onDestroy cleanup venga chiamata (come in: stai loggando e/o guardando il logcat)?

Se la tua app non è persistente, potrebbe essere meglio fare pulizia quando l'app non è più in uso (onPause).

Inoltre, se si dispone di due connessioni c'è qualcosa di speciale che è necessario fare per chiuderle entrambe? Solo indovinando su quello.