bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


android_threads

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
android_threads [2023/10/17 13:34]
enric_mieza_sanchez [APIs i JSON]
android_threads [2025/10/14 18:53] (actual)
enric_mieza_sanchez [Android i WebSockets]
Línia 1: Línia 1:
 ====== Threads en Android ====== ====== Threads en Android ======
  
-Aclarirem certs conceptes de //threading// aplicats a Android.+Aclarirem certs conceptes de //threading// aplicats a Android, en particular per a les comunicacions REST HTTP.
  
 {{ android:androidthreads.jpg?450 }} {{ android:androidthreads.jpg?450 }}
Línia 7: Línia 7:
 Referències: Referències:
   * [[Android]]   * [[Android]]
 +  * [[Android Comunicacions]]
   * [[Android ListView]]   * [[Android ListView]]
  
-{{tag> #Dam #DamMp08 #DamMp08Uf01 #DamMp08Uf1 #DamMp08Uf02 #DamMp08Uf2 #DamMp09 #DamMp09Uf02 #DamMp09Uf2 android threads mobile java }}+{{tag> #Dam #DamMp08 #DamMp08Uf01 #DamMp08Uf1 #DamMp08Uf02 #DamMp08Uf2 #DamMp09 #DamMp09Uf02 #DamMp09Uf2 android threads mobile java kotlin }}
  
 ===== Conceptes previs ===== ===== Conceptes previs =====
Línia 156: Línia 157:
 Ull, perquè si el server de **myip.com** rep moltes peticions seguides **acaba per bloquejar-se ja que es pensa que som atacants**. Ull, perquè si el server de **myip.com** rep moltes peticions seguides **acaba per bloquejar-se ja que es pensa que som atacants**.
  
-Si veieu que amb el CURL no funciona, cerqueu una altra API, per exemple: +Si veieu que amb el CURL no funciona, cerqueu una altra API. Cerqueu alguna que us agradi d'aquest [[https://github.com/public-apis/public-apis|llistat de public APIs]]. Per exemple, aquesta ens retorna la URL d'una imatge aleatòria de guineus
 +  $ curl https://randomfox.ca/floof/
  
 </WRAP> </WRAP>
Línia 173: Línia 174:
   - No oblidis activar el permís Android per a accés a Internet o obtindràs una altra excepció.   - No oblidis activar el permís Android per a accés a Internet o obtindràs una altra excepció.
 </WRAP> </WRAP>
 +
  
 <WRAP todo> <WRAP todo>
Línia 179: Línia 181:
   - Quan carreguem dades d'internet, actualitza-les en el ''TextView''. Comprova que si ho fem en el mateix cos del //thread//, la funció ''run'', funciona.   - Quan carreguem dades d'internet, actualitza-les en el ''TextView''. Comprova que si ho fem en el mateix cos del //thread//, la funció ''run'', funciona.
  
 +Anem a posar alguna acció gràfica que ens obligui a utilitzar el ''Handler'', que serà el què ens permetrà executar en el //thread// principal (el de gràfics).
 +
 +Farem servir una ''ImageView'':
 +  - Afegeix la ''ImageView'' al //layout//.
 +  - Descarrega una imatge d'internet i transforma-la en ''Bitmap''. Ho podem fer així <code java>
 +String urldisplay = "https://randomfox.ca/images/122.jpg";
 +Bitmap bitmap;
 +try {
 +    InputStream in = new java.net.URL(urldisplay).openStream();
 +    bitmap = BitmapFactory.decodeStream(in);
 +} catch (Exception e) {
 +    Log.e("Error", e.getMessage());
 +    e.printStackTrace();
 +}
 +</code>
 +  - Mostra la imatge al ''ImageView''. Comprova que al fer el ''imageView.setImageBitmap(bitmap)'' ens falla amb una excepció si ho fem al //thread// de comunicacions.
 +  - Utilitza el ''Handler'' com a l'exemple i comprova que ara canvia la imatge i no peta.
 +
 +Si et queda temps, crida la API randomfox (explicada mes amunt) i obtingues una imatge diferent cada cop, i mostra-la al ''ImageView''.
 +
 +</WRAP>
 +
 +
 +Per si et resulta avorrit, mes feina (exercici optatiu):
 +
 +<WRAP todo>
 Anem a provar amb una GUI més ambiciosa: una ''ListView''. Anem a provar amb una GUI més ambiciosa: una ''ListView''.
   - Afegeix una [[Android ListView]] al //layout//.   - Afegeix una [[Android ListView]] al //layout//.
Línia 190: Línia 218:
  
 \\ \\
 +
 +====== Android i WebSockets ======
 +
 +Si voleu emprar Websockets mireu l'article [[Android Comunicacions]].
  
android_threads.1697549662.txt.gz · Darrera modificació: 2023/10/17 13:34 per enric_mieza_sanchez