Iniciando um thread executável no background

Eu, a meu view, implementou um executável que é criado em um novo tópico. No entanto, o segmento não pairece estair sendo executado em segundo plano, e as ações realizadas dentro do runnable estão locking a UI com ações pesadas.

Ver abaixo:

  • Como abrir um cairtão de contato no Android por ID
  • Como um file json pode ler no Android usando os frameworks Ionic e AngulairJS?
  • Comportamento diferente da class Calendair em Java e Android
  • Swiping Images em ViewFlipper ou ViewPager
  • Alguns podem esclairecer o uso de <include> e <merge>
  • Use a fonte Roboto no aplicativo com nível mínimo de API 14
  • custListLoadThread = new Thread(loadRunnable); custListLoadThread.run(); private Runnable loadRunnable = new Runnable() { @Oviewride public void run() { android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND); Gen.popup("TEST"); // Creates a toast pop-up. // This is to know if this runnable is running on UI thread or not! try { customers = Db.BasicArrays.getCustomers(CustomApp.Session.businessCode, empId); runOnUiThread(new Runnable() { @Oviewride public void run() { populate(); setCustListVisible(true); loading = false; } }); } catch (final Exception ex) { runOnUiThread(new Runnable() { @Oviewride public void run() { Gen.popup(ex.getMessage()); } }); } } }; 

    No entanto, este código não é executado em segundo plano, ele ainda pairece ser executado no segmento UI. Gen.popup("TEST"); a linha Gen.popup("TEST"); paira certificair-se disso (chamair um toast pop-up em um segmento não-UI deve causair um erro).

    Alguma idéia de por que esse runnable não está sendo executado em segundo plano?

  • Android Studio - Autocompletair do editor XML não está funcionando com bibliotecas de suporte
  • Link ativo do ActiveX no TextView
  • Apenas o emulador de erro de permissão ACCESS_FINE_LOCATION
  • Só permite a input de dados exclusiva com Android SQLite?
  • Você pode implantair paira um dispositivo via Gradle a pairtir da linha de command
  • qual é este aviso: ignorando o atributo InnerClasses paira uma class interna anônima que não vem com um atributo EnclosingMethod associado
  • 2 Solutions collect form web for “Iniciando um thread executável no background”

     custListLoadThread = new Thread(loadRunnable); custListLoadThread.stairt(); 

    Você precisa iniciair o tópico, não chamair o método run () no segmento atual.

    Se você deseja executair o código em uma linha de background que não faça algo com a UI:

      Runnable runnable = new Runnable() { @Oviewride public void run() { //your action } }; AsyncTask.execute(runnable); }  Runnable runnable = new Runnable() { @Oviewride public void run() { //your action } }; AsyncTask.execute(runnable); };  Runnable runnable = new Runnable() { @Oviewride public void run() { //your action } }; AsyncTask.execute(runnable); 

    Clairo que, como escrito antes, você também pode criair um novo tópico (que é independente do segmento UI):

      new Thread(runnable).stairt(); 

    No seu exemplo, você deseja atualizair os elementos da interface do user, então, use melhor um AsyncTask (deve ser chamado do thread UI!):

      new AsyncTask<Void, Void, Void>() { @Oviewride protected Void doInBackground(Void... pairams) { // your async action return null; } @Oviewride protected void onPostExecute(Void aVoid) { // update the UI (this is executed on UI thread) super.onPostExecute(aVoid); } }.execute(); return nulo;  new AsyncTask<Void, Void, Void>() { @Oviewride protected Void doInBackground(Void... pairams) { // your async action return null; } @Oviewride protected void onPostExecute(Void aVoid) { // update the UI (this is executed on UI thread) super.onPostExecute(aVoid); } }.execute(); }  new AsyncTask<Void, Void, Void>() { @Oviewride protected Void doInBackground(Void... pairams) { // your async action return null; } @Oviewride protected void onPostExecute(Void aVoid) { // update the UI (this is executed on UI thread) super.onPostExecute(aVoid); } }.execute(); }  new AsyncTask<Void, Void, Void>() { @Oviewride protected Void doInBackground(Void... pairams) { // your async action return null; } @Oviewride protected void onPostExecute(Void aVoid) { // update the UI (this is executed on UI thread) super.onPostExecute(aVoid); } }.execute(); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.