Your SlideShare is downloading. ×
Conectando o Android a outros sistemas
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Conectando o Android a outros sistemas

363

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
363
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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's <application> tag, which will cause that class to be instantiated for you when the process for your application/package is created.
  • Transcript

    • 1. Conectando o Androida outros sistemas.
    • 2. Elias GranjaDesenvolvedor @ciandt@elias_era / http://www.eliasgranja.com.br
    • 3. Sobre o que é a palestra?●UI Thread.●AsyncTask.●Trabalhando com Json.●Conexão com a web.●Cache!
    • 4. Ui Thread?Vulgo Main Thread!
    • 5. Responsável porcomponentes e suasações(callbacks).
    • 6. Pode ficar bloqueada porapenas alguns segundos.
    • 7. Thread thread = new Thread(new Runnable() {@Overridepublic void run() {//SOMETHING BIG HEREToast.makeText(context, “feito”,duration).show();}});thread.start();
    • 8. Thread thread = new Thread(new Runnable() {@Overridepublic void run() {//SOMETHING BIG HEREToast.makeText(context, “feito”,duration).show();}});thread.start();
    • 9. MyActivity.this.runOnUiThread(new Runnable() {public void run(){Toast.makeText(context,“feito”,duration).show();}});}});thread.start();
    • 10. AsyncTaskUI Thread Worker ThreadOnPreExecutedoInBackgroundOnPreExecuteonProgressUpdateOnPostExecute
    • 11. Como usar?Extende AsyncTask! ;Dnew MyAsyncTask().execute(params);
    • 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. 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. 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. Web?
    • 16. <uses-permissionandroid:name="android.permission.INTERNET" />
    • 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. Trabalhando com JSON
    • 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. JSONObjectobject.getString(“name”);object.getString(“state”);//object.getLong//object.getJSONArray//object.getJSONObject.....JSONObject object = new JSONObject(json);
    • 21. GSONString json = Gson.toJson(elias);GsonBuilder builder = new GsonBuilder();Gson gson = builder.create();
    • 22. GSONPerson elias =Gson.fromJson(json, Person.class)GsonBuilder builder = new GsonBuilder();Gson gson = builder.create();
    • 23. Cache!
    • 24. Static?Class FacebookPhotosTask<URL, Integer, Image>{Static Map<String,Image> myPhoto;//....
    • 25. Application?
    • 26. < ApplicationAndroid:name=”br.com.eliasgranja.app.ExampleApp”>No manifesto
    • 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. ExampleApp app =(ExampleApp) myActivity.getApplication();Utilizando na Activity
    • 29. Quem é melhor?
    • 30. Então....
    • 31. Perguntas?@elias_era / http://www.eliasgranja.com.brElias Granja

    ×