Autore Topic: Modificare Bitmap tramite thread  (Letto 326 volte)

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Modificare Bitmap tramite thread
« il: 30 Giugno 2016, 00:13:51 CEST »
0
Ciao a tutti, ho questo problema:
ho un'activity principale dove dichiaro un oggetto Bitmap, e in cui ottengo un'immagine bitmap aprendo una connessione attraverso un nuovo thread. Il problema è che se provo a memorizzare il Bitmap nell'oggetto che ho creato resta sempre null, sapreste dirmi come risolvere questo inconveniente?

Ecco la parte del thread

Codice: [Seleziona]
//Layout immagine profilo
         Thread t = new Thread(new Runnable() {
             public void run() {
                  try {
                      URL facebookProfileURL=new URL(extras.get("link").toString());
                      bitmap= BitmapFactory.decodeStream(facebookProfileURL.openConnection().getInputStream());  //oggetto che ho creato nella stessa activity fuori da questo thread
                  }

                  catch (MalformedURLException e) {
                              e.printStackTrace();}

                  catch (IOException e) {
                             e.printStackTrace();}
             }
         });
        t.start();

        ImageView i=(ImageView)headerLayout.findViewById(R.id.fotoutente);
        i.setImageBitmap(bitmap);
.
.
.

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:Modificare Bitmap tramite thread
« Risposta #1 il: 30 Giugno 2016, 09:01:06 CEST »
+1
Io modificherei un po' il codice.

Al posto del Thread metterei un AsyncTask e nel metodo doInBackground ti carichi la bitmap,
poi nel onPostExecute la assegni alla ImageView!
« Ultima modifica: 30 Giugno 2016, 09:03:51 CEST da m0nkeyDCode »
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻

Offline iClaude

  • Utente normale
  • ***
  • Post: 177
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 10
Re:Modificare Bitmap tramite thread
« Risposta #2 il: 30 Giugno 2016, 09:26:51 CEST »
0
Ciao a tutti, ho questo problema:
ho un'activity principale dove dichiaro un oggetto Bitmap, e in cui ottengo un'immagine bitmap aprendo una connessione attraverso un nuovo thread. Il problema è che se provo a memorizzare il Bitmap nell'oggetto che ho creato resta sempre null, sapreste dirmi come risolvere questo inconveniente?

Ecco la parte del thread

Codice: [Seleziona]
//Layout immagine profilo
         Thread t = new Thread(new Runnable() {
             public void run() {
                  try {
                      URL facebookProfileURL=new URL(extras.get("link").toString());
                      bitmap= BitmapFactory.decodeStream(facebookProfileURL.openConnection().getInputStream());  //oggetto che ho creato nella stessa activity fuori da questo thread
                  }

                  catch (MalformedURLException e) {
                              e.printStackTrace();}

                  catch (IOException e) {
                             e.printStackTrace();}
             }
         });
        t.start();

        ImageView i=(ImageView)headerLayout.findViewById(R.id.fotoutente);
        i.setImageBitmap(bitmap);
.
.
.

Prova a riformulare il quesito in italiano comprensibile.
Ad esempio cosa intendi con "se provo a memorizzare il Bitmap nell'oggetto che ho creato resta sempre null". Quale oggetto?
Ciao.

Post unito: 30 Giugno 2016, 09:38:48 CEST
Cmq noto un errore nel tuo codice, perché lanci un thread per scaricare l'immagine,  operazione che richiede del tempo, e subito dopo,  cioè verosimilmente prima che l'immagine sia stata scaricata,  la imposti sulla ImageView.
Il modo corretto è usare il metodo di Activity runOnUiThread, richiamato all'interno di doInBackground dopo l'istruzione che scarica la Bitmap, per visualizzare l'immagine nel thread della GUI.
Ciao.
« Ultima modifica: 30 Giugno 2016, 09:38:48 CEST da iClaude, Reason: Merged DoublePost »

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Modificare Bitmap tramite thread
« Risposta #3 il: 30 Giugno 2016, 11:58:50 CEST »
0
Io modificherei un po' il codice.

Al posto del Thread metterei un AsyncTask e nel metodo doInBackground ti carichi la bitmap,
poi nel onPostExecute la assegni alla ImageView!


Grazie mille!!! Risolto.