Conectando o Android a outros sistemas

  • 323 views
Uploaded on

 

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
323
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
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