Android Java runOnUiThread ()

Sono stato in giro un po 'con il metodo runOnUiThread. E se faccio semplicemente un metodo nella mia attività:

public void Test() { runOnUiThread(new Runnable() { public void run() { Log.v("mainActivity", "test"); } }); } 

Ho notato che questo runnable funziona solo una volta. Tuttavia, questo non è un problema. Quello che mi chiedevo è se ho completamente perso qualcosa e fa qualcosa in background che causerebbe una caduta di tasso di fotogrammi quando ho eseguito il metodo un paio di volte.

  • Ottenere un evento quando un elemento di ListView è visibile o less
  • Android AlarmManager setExact () non è esatta
  • Querying e working with Cursors in SQLite su Android
  • Come consegnare e persistere modifiche all'interface utente da un'attività asynchronous ospitata da un frammento conservato?
  • Servizio di notifica Google / Apple Push (APNS / GCM)
  • Impostazione predefinita della videocamera non terminata Premere il tasto OK
  • recyclerview onscrolllistener non funziona quando setNestedScrollingEnabled a false
  • come convertire il formato della data in android
  • Corda telefonica Cordova - Barra di stato nera sul fondo dopo fullscreen
  • Null pointer Eccezione Android
  • greenDAO 40 secondi per inserire 600 record
  • Android Wear, connetti al dispositivo bluetooth
  • 2 Solutions collect form web for “Android Java runOnUiThread ()”

    Questo è il corpo completo di Activity.runOnUiThread (Runnable) :

     public final void runOnUiThread(Runnable action) { if (Thread.currentThread() != mUiThread) { mHandler.post(action); } else { action.run(); } } 

    Il corpo del metodo viene ancora eseguito nel thread di background e mHandler della class android.os.Handler implementa una coda interna per i Runnables inviati ad esso, quindi a less che non si sta facendo bloccando il lavoro nel Runnable (che è un grande no-no su la row dell'interface utente) o call questo metodo verso l'alto di mille volte in un breve periodo, non si dovrebbe vedere alcuna differenza.

    Ora, se chiamaste Handler.postAtFrontOfQueue (Runnable) , allora ci sarebbe un problema, perché il tuo Runnable è essenzialmente "tagliente in linea". In questo caso, ciò probabilmente causerebbe un lancio, perché il tuo eseguibile viene eseguito anziché gli aggiornamenti dell'interface utente necessari per eseguire (come lo scorrimento).

    Si noti che è necessario eseguire solo aggiornamenti UI nel thread UI, come call qualsiasi metodo in una vista (quindi il nome "Thread UI" e perché questo metodo esiste) o qualsiasi operazione in cui la documentazione esplicita afferma che deve essere eseguita il thread UI. Altrimenti, se sei già su un thread di background, non c'è ragione reale per lasciarlo.

    È improbabile che ciò provocherebbe un'interruzione significativa del process dell'interface utente, ma non è veramente in grado di eseguirlo sul thread UI.

    Se stai facendo una quantità significativa di lavoro, devi assicurarti di non farlo sul thread UI.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.