Conectando o Androida outros sistemas.
Elias GranjaDesenvolvedor @ciandt@elias_era / http://www.eliasgranja.com.br
Sobre o que é a palestra?●UI Thread.●AsyncTask.●Trabalhando com Json.●Conexão com a web.●Cache!
Ui Thread?Vulgo Main Thread!
Responsável porcomponentes e suasações(callbacks).
Pode ficar bloqueada porapenas alguns segundos.
Thread thread = new Thread(new Runnable() {@Overridepublic void run() {//SOMETHING BIG HEREToast.makeText(context, “feito”...
Thread thread = new Thread(new Runnable() {@Overridepublic void run() {//SOMETHING BIG HEREToast.makeText(context, “feito”...
MyActivity.this.runOnUiThread(new Runnable() {public void run(){Toast.makeText(context,“feito”,duration).show();}});}});th...
AsyncTaskUI Thread Worker ThreadOnPreExecutedoInBackgroundOnPreExecuteonProgressUpdateOnPostExecute
Como usar?Extende AsyncTask! ;Dnew MyAsyncTask().execute(params);
Pera, o que?extends AsyncTask<Params, Progress, Result>protected Result doInBackground(Params... params)protected void onP...
As regras●A instância da task precisa ser criada na UI Thread.● O método execute precisa ser chamado na UI Thread.●Não cha...
Paralelização entre as tasks?●Desde a versão 3 do android as tasks são executadasnuma única thread.Se quiser execuções ver...
Web?
<uses-permissionandroid:name="android.permission.INTERNET" />
DefaultHttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost(“http://flisol.net”);post.setEntity(new St...
Trabalhando com JSON
JSONStringer{name: “Elias”,state: “SP”,}JSONStringer js = new JSONString();js.object();js.key(“name”).value(“Elias”);js.ke...
JSONObjectobject.getString(“name”);object.getString(“state”);//object.getLong//object.getJSONArray//object.getJSONObject.....
GSONString json = Gson.toJson(elias);GsonBuilder builder = new GsonBuilder();Gson gson = builder.create();
GSONPerson elias =Gson.fromJson(json, Person.class)GsonBuilder builder = new GsonBuilder();Gson gson = builder.create();
Cache!
Static?Class FacebookPhotosTask<URL, Integer, Image>{Static Map<String,Image> myPhoto;//....
Application?
< ApplicationAndroid:name=”br.com.eliasgranja.app.ExampleApp”>No manifesto
Public class ExampleApp extends Application{Private Map<String,Image> cache;Public void cache(Image image, String name){Ca...
ExampleApp app =(ExampleApp) myActivity.getApplication();Utilizando na Activity
Quem é melhor?
Então....
Perguntas?@elias_era / http://www.eliasgranja.com.brElias Granja
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
Upcoming SlideShare
Loading in...5
×

Conectando o Android a outros sistemas

397

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
397
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Android irá matar o aplicativo se não respeitarmos o limite de tempo da UI Thread. Autalmente 5 segundos
  • Dessa forma criamos outra thread e temos tempo “infinito” para fazermos o que acharmos melhor.
  • O código parecia ser bonito, mas não podemos alterar a tela do usuário por uma thread que não seja a UI thread. Então temos que fazer algumas “gambiarras” para conseguirmos isso. http://developer.android.com/reference/android/app/Activity.html#runOnUiThread%28java.lang.Runnable%29
  • http://developer.android.com/reference/android/app/Activity.html#runOnUiThread%28java.lang.Runnable%29
  • A classe AsyncTask tem 3 métodos abstrados que devemos definir comportamento. Dbackground que fará o trabalho. ProgressUpdated para mostrar algum tipo de progresso na tela do usuário. E por fim postExecute que já tem o resultado final. PostExecute é chamado automaticamente, enquanto que o ProgressUpdated precisa ser chamado manualmente via publishProgress. “ Forma de reutilizar o mesmo código com diferentes inputs” – Oracle docs
  • Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your AndroidManifest.xml&apos;s &lt;application&gt; tag, which will cause that class to be instantiated for you when the process for your application/package is created.
  • Conectando o Android a outros sistemas

    1. 1. Conectando o Androida outros sistemas.
    2. 2. Elias GranjaDesenvolvedor @ciandt@elias_era / http://www.eliasgranja.com.br
    3. 3. Sobre o que é a palestra?●UI Thread.●AsyncTask.●Trabalhando com Json.●Conexão com a web.●Cache!
    4. 4. Ui Thread?Vulgo Main Thread!
    5. 5. Responsável porcomponentes e suasações(callbacks).
    6. 6. Pode ficar bloqueada porapenas alguns segundos.
    7. 7. Thread thread = new Thread(new Runnable() {@Overridepublic void run() {//SOMETHING BIG HEREToast.makeText(context, “feito”,duration).show();}});thread.start();
    8. 8. Thread thread = new Thread(new Runnable() {@Overridepublic void run() {//SOMETHING BIG HEREToast.makeText(context, “feito”,duration).show();}});thread.start();
    9. 9. MyActivity.this.runOnUiThread(new Runnable() {public void run(){Toast.makeText(context,“feito”,duration).show();}});}});thread.start();
    10. 10. AsyncTaskUI Thread Worker ThreadOnPreExecutedoInBackgroundOnPreExecuteonProgressUpdateOnPostExecute
    11. 11. Como usar?Extende AsyncTask! ;Dnew MyAsyncTask().execute(params);
    12. 12. Pera, o que?extends AsyncTask<Params, Progress, Result>protected Result doInBackground(Params... params)protected void onProgressUpdated(Progress... progress)protected void onPostExecute(Result result)protect final publishProgress(Progress.. progress)protected void onPreExecute()
    13. 13. As regras●A instância da task precisa ser criada na UI Thread.● O método execute precisa ser chamado na UI Thread.●Não chame na mão os métodos “especiais”.●Uma task só pode ser executada uma vez, umaexecção será lançada se tentar executar umasegunda vez.
    14. 14. Paralelização entre as tasks?●Desde a versão 3 do android as tasks são executadasnuma única thread.Se quiser execuções verdadeiramente paralelas, chame:MyAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, Params params.
    15. 15. Web?
    16. 16. <uses-permissionandroid:name="android.permission.INTERNET" />
    17. 17. DefaultHttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost(“http://flisol.net”);post.setEntity(new StringEntity(“{name:elias}”));HttpResponse rs = client.execute(post);String json = EntityUtils.toString(rs.getEntity());
    18. 18. Trabalhando com JSON
    19. 19. JSONStringer{name: “Elias”,state: “SP”,}JSONStringer js = new JSONString();js.object();js.key(“name”).value(“Elias”);js.key(“state”).value(“SP”);js.endObject();
    20. 20. JSONObjectobject.getString(“name”);object.getString(“state”);//object.getLong//object.getJSONArray//object.getJSONObject.....JSONObject object = new JSONObject(json);
    21. 21. GSONString json = Gson.toJson(elias);GsonBuilder builder = new GsonBuilder();Gson gson = builder.create();
    22. 22. GSONPerson elias =Gson.fromJson(json, Person.class)GsonBuilder builder = new GsonBuilder();Gson gson = builder.create();
    23. 23. Cache!
    24. 24. Static?Class FacebookPhotosTask<URL, Integer, Image>{Static Map<String,Image> myPhoto;//....
    25. 25. Application?
    26. 26. < ApplicationAndroid:name=”br.com.eliasgranja.app.ExampleApp”>No manifesto
    27. 27. Public class ExampleApp extends Application{Private Map<String,Image> cache;Public void cache(Image image, String name){Cache.put(name,image);}Criando a class
    28. 28. ExampleApp app =(ExampleApp) myActivity.getApplication();Utilizando na Activity
    29. 29. Quem é melhor?
    30. 30. Então....
    31. 31. Perguntas?@elias_era / http://www.eliasgranja.com.brElias Granja
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×