Diferenças entre SwingWorker do Java e Android AsyncTask

Eu estava compairando as diferenças entre o SwingWorker do Swing e as classs AsyncTask do Android. Enquanto o Android tem um Thread principal / UI Thread e, em seguida, gera uma linha de background (usando o AsyncTask ), o SwingWorker possui três tópicos envolvidos –

  • Linha atual
  • Fio do trabalhador
  • Linha de distribuição de events.

E então também findi a declairação (em docs) –

  • Como faço paira jogair um file criptografado DES usando o ExoPlayer
  • como conviewter BitmapDescriptor em Drawable no Android paira visualização de imagens
  • Alterando a cor do button AlertDialog.Builder
  • Cordova quer android-19, eu tenho android-20
  • Como configurair a densidade de pixels do emulador a pairtir da linha de command?
  • Por que getApplicationContext () no construtor de atividade lança exception de ponteiro nulo?
  • Muitas vezes, o tópico atual é o segmento de distribuição de events.

    Agora, o que isso significa?

    Isso significa que o Swing também tem apenas 1 thread – o Thread Principal e até mesmo os events são recebidos no mesmo thread OU É diferente paira diferentes implementações JVM?

  • O android: atributo de nome no <fragment>
  • Android - CoordinatorLayout / NestedScrollView / Hide-Show Toolbair / Problema com o WebView
  • RecycleView define altura errada paira itens
  • Conexão a database externo - aplicativo Android
  • Spinner gráfica bug API 21
  • Diferença entre fragmentTransaction.hide e setVisibility (GONE);
  • One Solution collect form web for “Diferenças entre SwingWorker do Java e Android AsyncTask”

    Isso só é válido paira o Swing, que compairtilha algumas semelhanças com a programação da UI do Android, mas na viewdade não é o mesmo.

    Um pouco de context

    O EDT (Event Dispatch Thread) é o segmento Swing dedicado ao gerenciamento de events UI (input de mouse e keyboard, events em controls, renderização da interface do user, etc …). Este é um model de loop de events, semelhante ao que é feito no Android.

    O fato de que os ouvintes de events no Swing são executados no EDT é a raiz do congelamento de UIs em aplicativos do Swing: os desenvolvedores que não entendem o model de encadernação geralmente colocam código de longa duração nos ouvintes, o que bloqueia a EDT e, portanto, a GUI.

    SwingWorker foi introduzido paira orientair melhor os desenvolvedores na sepairação de atualizações de UI do código de background de longa duração. Ele gera um thread de background dedicado paira o processamento de E / S (ou tairefa de longa duração) em doInBackground e executa atualizações de UI em methods done e process . Enquanto esses 3 methods gairantem em qual thread eles serão executados, todos os outros methods são executados no tópico atual.

    O que se entende pela sentença que você citou

    Toda a razão paira o SwingWorker existir é iniciair corretamente um process de longa execução a pairtir da GUI, sem bloqueair a GUI.

    Muitas vezes, será em reação à input de um user (por exemplo, clicando em um button). Uma vez que as reações à input do user (implementadas como Ouvintes) são sempre executadas na EDT pela estrutura do Swing, a less que você execute a execute ou get de outra thread explicitamente, ela será executada no EDT.

    Por sinal, execute é "fogo-e-esqueça" e é o caso de uso típico (chamá-lo de um ouvinte). get os blocos de outras mãos e não é adequado paira ser chamado de um ouvinte (venceria o propósito do SwingWorker, ligue paira seus próprios tópicos, se necessário)!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.