Entendendo a Thread Principal de Uma APP Android

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação. Você receberá um email de confirmação. Somente depois de confirmar é que poderei lhe enviar o conteúdo exclusivo por email.

Email inválido.
Blog /Android /Entendendo a Thread Principal de Uma APP Android

Entendendo a Thread Principal de Uma APP Android

Vinícius Thiengo13/12/2013, Sexta-feira, às 15h
(3840) (15) (8) (1)

Opa! Blz?!

Nesse vídeo mostro o que é, como funciona e como acessar a Thread principal de uma Activity. Acho que esse vídeo está entre os cinco mais importantes sobre Android que já postei no blog, pois é com o entendimento de Thread principal do Android que o desenvoolvedor Android começa a enxergar as inifinitas possibilidades da plataforma. Preste bem atenção na classe Handler, na connexão com a Internet e na permissão de conexão com a Internet. Esses são os conceitos rápidos para o entendimento do funcionamento da Thread principal.

Queria deixar claro que há outras formas de acessar a Thread principal, porém adotei a que acho mais didática e a que uso no desenvolvimento das APPs que crio. Note que não falo sobre o script de conexão com a Internet, pois o foco é realmente mostrar o funcionamento da Thread principal de uma APP Android.

O link para download do projeto se encontra logo abaixo no post.

Compartilhe, comente! Vlw.

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Relacionado

Classe Intent e o Conceito de Pilha em AndroidClasse Intent e o Conceito de Pilha em AndroidAndroid
Enviando e Recebendo Dados Entre Activities em AndroidEnviando e Recebendo Dados Entre Activities em AndroidAndroid
Entendendo e Utilizando IntentFilter no AndroidEntendendo e Utilizando IntentFilter no AndroidAndroid
Assinando Uma APP Android e Publicando na Play StoreAssinando Uma APP Android e Publicando na Play StoreAndroid

Compartilhar

Comentários Facebook (3)

Comentários Blog (12)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
03/02/2017, Sexta-feira, às 10h
Refiz a aplicação com AsyncTask, depois de executar o app encerra.
Qual seria o problema?


package br.exemplothreadprincipal;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends Activity {
public ImageView iv;
    public ProgressBar progressBar;
    public Button button;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.botao);
        iv = (ImageView) findViewById(R.id.imagem);
        progressBar = (ProgressBar)findViewById(R.id.progressBar);
    }

    public void disableprogressbar(){
        progressBar.setVisibility(View.GONE);
    }

    public void setView(Bitmap bitmap){
        iv.setImageBitmap(bitmap);
    }

    public void baixarImagemWeb(View view) {
        Download download = new Download();
        download.execute();
    }
    private class Download extends AsyncTask<ImageView, ImageView, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(ImageView... params) {
            try {

                URL url = new URL("http://www.thiengo.com.br/img/system/logo/thiengo-80-80.png ");
                HttpURLConnection connection;
                connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                final Bitmap imagem = BitmapFactory.decodeStream(input);

                Log.i("livro", "baixou imagem.");
                setView(imagem);
            }
            catch (MalformedURLException e) {
                e.printStackTrace();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            disableprogressbar();
        }
    }
}
Responder
Vinícius Thiengo (0) (0)
03/02/2017, Sexta-feira, às 13h
Victor, tudo bem?

De acordo com a assinatura de seu AsyncTask: Download extends AsyncTask<ImageView, ImageView, Void>

A invocação de execute() por meio de uma instância de Download, essa invocação deve ter como parâmetro um ImageView. Seria assim: download.execute( iv );

Mas acredito essa não ser a melhor opção para seu código. Partindo do algoritmo que você colocou aqui eu fiz algumas alterações, veja se a versão do link a seguir funciona melhor para ti: http://pastebin.com/KNKEu8Er

Note que o download de imagem do vídeo aqui é somente para apresentar o trabalho com Thread, pois para carregamento de imagem você deve mesmo utilizar libraries como as seguintes:

Picasso: http://square.github.io/picasso/
Universal Image Loader: http://www.thiengo.com.br/carregamento-e-cache-de-imagem-com-universal-image-loader-no-android
Fresco: http://www.thiengo.com.br/lib-fresco-para-carregamento-de-imagens-com-gifs-e-webps-animados-material-design-android-parte-12

Abraço.
Responder
03/02/2017, Sexta-feira, às 15h
Shown Vinícius , ainda estou domindo os paramentro do AsyncTask, deu tudo certo. E parabéns pelos seus vídeos.
Responder
Rodolfo Lima Jesus (1) (0)
31/10/2015, Sábado, às 09h
Parabéns pelos tutorias, comecei aprender android a pouco tempo e posso dizer que aprendi muito com seus posts. Desculpa te fazer essa pergunta por aqui, mas você já fez algum tutorial sobre fazer login em um site via programação, sem api? Se não fez, fica a dica. Estou quebrando a cabeça para fazer isso, pois não tem nada claro na internet para estudar.

Abs.
Responder
Vinícius Thiengo (0) (0)
01/11/2015, Domingo, às 01h
Vlw a dica Rodolfo, ainda não tenho esse vídeo. Abraço
Responder
Lucas P (1) (0)
01/07/2015, Quarta-feira, às 15h
Olá, Gostei muito do tutorial, mas estou com problema ao tentar implementar Handler, ele não lista método post
Responder
Vinícius Thiengo (0) (0)
02/07/2015, Quinta-feira, às 10h
Fala Lucas, blz?
Está utilizando o handler do import: android.os.Handler ? Pois testei aqui e o método post foi listado sem problemas. Tente com esse import, pois há um outro: java.util.logging.Handler que não é o correto para o caso acima. Abraço
Responder
31/01/2015, Sábado, às 15h
Cada atividade tem um thread principal. bom saber. Parabéms e obrigado.
Responder
pedrobmm52 (0) (0)
27/08/2014, Quarta-feira, às 13h
esse final antes das vari?veis serve pra que?
Responder
Vinícius Thiengo (0) (0)
27/08/2014, Quarta-feira, às 14h
Fala Pedro, blz?
Qual ponto especifico do vídeo (tempo) vc está falando? Abraço
Responder
28/08/2014, Quinta-feira, às 00h
Blz, estou dizendo quando você declarou o nome "final" antes da váriavel
Responder
Vinícius Thiengo (0) (0)
28/08/2014, Quinta-feira, às 02h
A sim, então, onde eu declarei o Bitmap imagem precisa de final para que eu possa acessar a mesma variável na instanciação anônima da classe Runnable, senão não vai! Abraço
Responder