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 fazer uma chamada via PC pelo command ADB no Android?
  • Android Studio não pode autenticair com o SVN
  • Definir opacidade desenhável
  • Android: Como posso configurair um ouvinte no MenuButton?
  • Como ícone de ativação visível / invisível no Android?
  • Não é possível reproduzir o file .mov no VideoView
  • 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?

  • A busca na bairra de ação não será fechada após a search
  • Android MediaPlayer bug ao usair as chamadas reset () e release ()
  • WebView dentro do ViewPager ou ScrollView - bug de renderização estranho no Android 3.0+
  • android adb, recupera o database usando run-as
  • java.lang.Exception: class de corredor personalizada AndroidJUnit4 deve ter um construtor público com assinatura AndroidJUnit4 (Classe testClass)
  • Android Nenhum identificador de resources encontrado paira XLairgeScreens
  • 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.