2011-10-26 11 views
7

Ho rilevato un progetto Android da un dipendente passato e mi chiedo se sia disponibile uno strumento facile per la creazione di profili di un'applicazione Android. Ho un LinearLayout con uno spinner ProgressBar all'interno di esso. Ora eseguo una chiamata di rete su un thread diverso mentre viene visualizzato lo spinner. Uso un'animazione di traduzione per mostrare l'intero LinearLayout e quando la chiamata di rete ritorna sull'altro thread, nascondo LinearLayout. Ora funziona alla grande, ma vedo che il tipo di spinner smette di girare mentre viene mostrato. Ora sembra che se interagisco con lo schermo, come provare a scorrere, lo spinner continuerà a girare. Per uno spinner ProgressBar standard devo impostare qualche comando sulla trottola per mantenerla in rotazione? Qualsiasi informazione su questo sarebbe grandiosa.Un modo semplice per rilevare dove il thread ui si sta bloccando su Android?

Grazie

risposta

10

È possibile utilizzare StrictMode per rilevare chiamate costose eseguite sul thread dell'interfaccia utente.

+0

Questo era perfetto, mi ha dato il numero di riga di dove si stavano verificando le interruzioni dell'interfaccia utente. – Bobbake4

+0

Ho un caso d'uso speciale per questo: questo non funziona se si utilizza AsyncTask con .execute e .get. (Non dovresti farlo, ovviamente, ma StrictMode non coglierà il problema.) –

0

Perché non provare l'attuazione la chiamata di rete in un AsyncTask? Nell'implementazione del metodo onPostExecute è possibile eseguire tutto ciò che è necessario sull'interfaccia utente (ovvero nascondere la barra di avanzamento e così via).

Oppure, se si utilizza lo compatibility/support library o il targeting Honeycomb o successivo, utilizzare invece Loader.

Problemi correlati