Autore Topic: Dubbio sull'uso di threads con i fragments  (Letto 485 volte)

Offline ale_gia

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulator
  • Sistema operativo:
    windows 7
Dubbio sull'uso di threads con i fragments
« il: 20 Agosto 2014, 11:36:57 CEST »
0
Ciao a Tutti
Sto sviluppando un' applicazione che contiene due fragments e dove entrambi i fragments devono prelevare dati da un servizio in real time (nello specifico un fragment dovrà usare i dati prelevati per plottare un grafico e l'altro invece usare i dati letti per far muovere un avatar, tutto questo in real time). Il dubbio che ho è questo: devo usare un thread per ogni fragment o me ne basta uno solo?

Vi ringrazio in Anticipo per le vostre risposte  ;-)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dubbio sull'uso di threads con i fragments
« Risposta #1 il: 20 Agosto 2014, 17:08:39 CEST »
0
Io userei un thread unico (l'importante è non farlo all'interno del thread di UI, non dedicare un thread a ciascun fragment).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline aeroxr1

  • Utente junior
  • **
  • Post: 76
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexus
  • Sistema operativo:
    window 8.1
Re:Dubbio sull'uso di threads con i fragments
« Risposta #2 il: 20 Agosto 2014, 20:52:04 CEST »
0
Ciao sono un amico dell'autore del thread e lavoriamo sullo stesso progetto :)

Pensavamo di fare un servizio started con il quale gestire il prelievo in real time di dati che devono essere prelevati da sensori bluetooth 4.0 ble. DA qui i dati verranno mandati (non si sa ancora come, dobbiamo metterci un pò mano) all'activity soprastante dove ci saranno due fragment.

Ora qui ecco il dubbio dei fragment e dei thread.

Te suggerisci di fare un worker thread da associare all'ui thread e nel worker thread metterci la generazione dei fragment ? :)
Per fare un worker thread si può usare asynctask ? ho letto che questo è consigliato solo in caso di operazioni brevi :/
http://developer.android.com/reference/android/os/AsyncTask.html
Quindi non va bene.
Ok dobbiamo vedere un pò come si gestiscono i thread :D

Abbiamo però questo dubbio sull'uso di un singolo thread  :
con un solo thread è impossibile che allo stesso tempo il thread in un fragment disegni il grafico con androidplot  e nel frattempo nell'altro fragment venga mosso tramite jpct-ae il modello 3d , o sbagliiamo ?


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dubbio sull'uso di threads con i fragments
« Risposta #3 il: 21 Agosto 2014, 08:17:07 CEST »
0
Più che altro pensavo ad un worker thread avviato nel service. E per evitare che ci siano conflitti di accesso tra fragment, devi gestire la sincronizzazione. Non è un argomento banale, guardati qualche esempio e spiegazione di programmazione concorrente su Java.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline aeroxr1

  • Utente junior
  • **
  • Post: 76
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexus
  • Sistema operativo:
    window 8.1
Re:Dubbio sull'uso di threads con i fragments
« Risposta #4 il: 21 Agosto 2014, 10:26:29 CEST »
0
Quindi te se ho capito bene ci consigli di :
- sul worker thread del service preleviamo i dati dal bluetooth e li mandiamo alla activity
- dai fragment devo stare attento a sincronizzali nella lettura del dato che viene mandato dal service sottostante

Ho capito cosa intendevi ? :)

Se si, allora ho un dubbio sul secondo punto :
i fragment lavorano tutti nello stesso thread della UI thread ?
Se così è allora non dovrei gestire nessuna concorrenza, perché avrebbero accesso solo uno alla volta al dato, mentre te mi dici, giustamente, di gestire la sincronizzazione tra i fragment; quindi mi viene da pensare sia un thread separato per ogni fragment.
Ho letto sulla documentazione ufficiale, ma questo dubbio mi è rimasto -.-


Inviato dal mio Galaxy Nexus utilizzando Tapatalk
« Ultima modifica: 21 Agosto 2014, 10:36:39 CEST da aeroxr1 »

iClaude

  • Visitatore
Re:Dubbio sull'uso di threads con i fragments
« Risposta #5 il: 21 Agosto 2014, 12:45:24 CEST »
0
I Fragment girano nel medesimo thread, ovvero quello della GUI.
Riguardo agli altri dubbi, hai detto di utilizzare un Service... Ebbene, la comunicazione tra il Service e la tua app vedrai che avviene esattamente in questa direzione (dal Service alla app) o tramite Broadcast o tramite interfaccia, per cui non ci dovrebbero essere problemi di sincronizzazione.

Offline aeroxr1

  • Utente junior
  • **
  • Post: 76
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexus
  • Sistema operativo:
    window 8.1
Re:Dubbio sull'uso di threads con i fragments
« Risposta #6 il: 21 Agosto 2014, 15:46:21 CEST »
0
più che altro mi riferivo alla risposta di @bradipao :)

Comunque devo spulciare bene i vari metodi di passaggio dati tra service e activity :)

Il problema che ci poniamo, in quanto non abbiamo ancora provato a far partire il tutto in un unica applicazione (io ho problemi con la parte 3d -.-" il mio amico qualche problemuccio con il plot del grafico 2d) è la lettera quasi contemporanea da parte dei due fragment del dato letto dal servizio e la visualizzazione sempre in contemporanea tra i due fragment che deve avvenire dopo pochi attimi che è stato letto il dato :)

esempio :
- servizio legge A al 1"
- servizio invia subito A (in un modo ancora da scegliere) all'activity soprastante
all'interno di questa activity vi sono due fragment e dovrebbero leggere e visualizzare allo stesso istante ( cmq sia il più velocemente possibile ) il dato letto al 1"

i problemi che mi pongo sono :
- meno tempo possibile tra la ricezione di A da parte del servizio e l'invio all'activity
- contemporaneità della visualizzazione di A da parte dei due fragment




Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dubbio sull'uso di threads con i fragments
« Risposta #7 il: 21 Agosto 2014, 16:21:55 CEST »
0
Normalmente tutto gira in un unico thread, quello di UI. Per operazioni come quelle di rete, ma in generale quelle onerose e continue, è necessario appoggiarsi ad un thread secondario. Ci sarà necessariamente un momento in cui il thread primario e quello secondario dovranno scambiarsi dati. Se viene usato il sistema dei messaggi non ci sono problemi, è implicitamente thread-safe, ma chiaramente soggetto a latenze e ritardi maggiori. Se invece si decide di scambiare dati tra thread attraverso strutture dati condivise, ecco che si rende necessario gestire la concorrenza dell'accesso. Rinnovo comunque a studiare un po' l'argomento in generale (esempio su qualche manuale java), perchè non è specifico android, sono i normali casi che si verificano nella programmazione multi-threaed.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline aeroxr1

  • Utente junior
  • **
  • Post: 76
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexus
  • Sistema operativo:
    window 8.1
Re:Dubbio sull'uso di threads con i fragments
« Risposta #8 il: 21 Agosto 2014, 20:31:52 CEST »
0
Grazie :) Ora ho già una visione più chiara di cosa mi serve e cosa no :)
Ti faccio un altra domanda, scusa se ti rompo :/ Quali sono le strutture dati più consone per passare dati tra servizi e activity ? almeno così studio so cosa cercare di preciso :)

Comunque ora mi ripasso un pò i thread in java , semafori e quant'altro, poi cerco di studiare un pò meglio lo scambio dati tra servizi e activity :)

Offline aeroxr1

  • Utente junior
  • **
  • Post: 76
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexus
  • Sistema operativo:
    window 8.1
Re:Dubbio sull'uso di threads con i fragments
« Risposta #9 il: 26 Agosto 2014, 12:29:58 CEST »
0
Facendola breve :
Come fa a non servire un worker thread apposito per disegnare in 3d con jpct-ae più un worker thread apposito per disegnare un grafico con android plot , sincronizzando poi questi sul dato fornito dal servizio ?

Come mai dite che non serve ? Devo aver capito male l'utilità dei thread allora :/
« Ultima modifica: 26 Agosto 2014, 13:24:01 CEST da aeroxr1 »