Autore Topic: Progressbar.....servon thread e async?Help  (Letto 2245 volte)

Offline sgotenks

  • Utente junior
  • **
  • Post: 57
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Geeksphone zero
  • Sistema operativo:
    Windows
Progressbar.....servon thread e async?Help
« il: 16 Maggio 2011, 20:00:14 CEST »
0
Mi sono un po perso, di java so poco su threads e cose simili..........

in pratica nella mia application faccio delle cose, che posson richieder del tempo, tipo legger dei dati da mysql e visualizzarli in una listview o lanciare sotto attività ecc.. il tempo è poco, si parlda di 1 max 4 secondi. Ho 2 casi da gestire:

1) Come ina ndroid market la app si apre e mostra un elenco di applicazioni selezionabili (10), se ne voglio altre alla fine della mia listview c'è un footer cn scritto "mostrane altre", uno ci clicca e dal db una query preleva altre 10 app e le incoda alle altre. QUesto richiede tra gli 1 e 2 secondi, durante il quale però l'utente può nn sapere cosa succede, voler cliccare ancora lo stesso pulsante o altri ecc...=> il footer deve diventare nn più cliccabile e a fianco alla scritta deve apparire una progressbar che gira fintanto che nn sn stati scaricati i nuovi dati......dopo di chè torna invisibile.

Problema, il mio footer è un relative layout cn una textview e una progressbar settata a invisibile. Quando lo clicco ho fatto un listener che chiama il relativo metodo che in ordine:
- rende visibile la progressbar
- chiede i nuovi dati al db
- aggiorna la vista con la notify che segnala chje i dati sn cambiati.
-rende nuovamente invisibile la progressbar


Problema,  la progressbar resta sempre invisibile.........nn la vedo mai.......è come se fosse più il tempo x caricare la progressbar e renderla visibile che quello x fare il resto => aggiorna i dati e della progress bar nessuna traccia???? Come mai? QUndo si usan le progressbar servon thread e cose simili?

2)Clicco su un app della lista e mi si deve aprire una nuova attività cn il dettaglio dell'app........in questo caso vorrei una progresdialog che mi dice che qualcosa sta accadendo e poi sparisce facendo apparire la nuova attività, ma idem, anche in questo caso usando i metodì x crearne una al volo e poi dismiss nn mi visualizza niente e mi apre direttamente la nuova attività......

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:Progressbar.....servon thread e async?Help
« Risposta #1 il: 16 Maggio 2011, 20:06:02 CEST »
0
Senza vedere il tuo codice è dura immaginare come è fatto e cosa possa esserci da cambiare.

Però, questo tutorial che ho fatto tempo usa un AsyncTask per prelevare dati dalla rete, con tanto di ProgressDialog integrata. Magari ti da' qualche spunto confrontandolo col tuo.
[facile] HttpBookSearch: AsyncTask, HttpClient, XML parsing, ProgressDialog - Android Developers Italia
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline sgotenks

  • Utente junior
  • **
  • Post: 57
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Geeksphone zero
  • Sistema operativo:
    Windows
Re:Progressbar.....servon thread e async?Help
« Risposta #2 il: 16 Maggio 2011, 22:49:44 CEST »
0
Domani posto il codice, ma nn c'è molto da vedere, perchè il problema nn è in quello che fa, che è giusto, ma nelle poche righe aggiunte per la progressbar..........


Penso mi manchi qualche concetto di base sui thread e sull'ordine cn cui sn eseguite le istruzioni.......presumo ad esempio che ci sian di base almeno 2 thread esistenti, uno x la GUI e uno x il codice che scriviamo xchè altrimenti quando clicco un pulsante che chiede info a un db e che impiega 5 secondi x riaverle nn dovrei poter compiere nessun altra azione sulla gui invece sn libero di cliccare da altre parti......anche se poi nn so cosa succede dopo che ho cliccato, perchè se questo secondo click chiama altro codice, quando verrà eseguito? In coda sopo la richiesta al db, in parallelo? Boh? Idem nel mio caso, io chiedo alla gui di mostrare una progressbar o di caricare una dialog, ma intanto del codice scritto da em che fa roba viene eseguito.......queste cose sn fatte in sequenza, oppure automaticamente in thread dicersi quendi mentre la gui cerca di caricare la dialog intanto un altro thread continua e eseguire il codice.....cmq domani posto il codice e vediamo se riesco a farvi capire il mio dilemma :)

Ora sto intanto dando un occhiata alla doc ufficiale su handlers e Asynktask..........x capire a che servon così domani potrò chieder con più precisione e capire meglio :)
« Ultima modifica: 16 Maggio 2011, 23:33:45 CEST da sgotenks »

Offline sgotenks

  • Utente junior
  • **
  • Post: 57
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Geeksphone zero
  • Sistema operativo:
    Windows
Re:Progressbar.....servon thread e async?Help
« Risposta #3 il: 17 Maggio 2011, 00:03:58 CEST »
0
Allora bradipao grazie al tuo tutorial ho le idee un po più chiare, è fatto molto bene.....e mi ha fatto capire che forse la mia applicazione necessità di una forte ristrutturazione basata sui thread........ti spiego meglio e se potessi brevemente rispondere alle domande numerate  :)

1)Cosa cambia in soldoni tra usare un asynctask e usare handler cn messaggi? NN fan la stessa cosa, ovvero permettere a un thread worker di eseguire un azione e se serve modificare qualcosa del thread UI?

Breve spiegazione della mia app.....sto rifacendo i market android x farla breve, quindi si apre, interroga un database cn una tabella applicazioni e le mostra in una listview proprio come nell'android market:(tempo di attesa un paio di secondi)

2)La mia applicazione funziona x ora tutta sul thread principale che da quanto ho capito è sbagliato giusto? Dovrei quindi modificarla in modo che appena la lancio apra un secondo thread che interroga il db , si fa tornare i dati e poi cn uno dei 2 modi sopra li passa al thread principale affinche riempa la listview?E' corretto come ragionamento?

Poi domani torniamo anche su quelllo che era l'argomento della domanda iniziale :)

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:Progressbar.....servon thread e async?Help
« Risposta #4 il: 17 Maggio 2011, 00:09:19 CEST »
0
Domani posto il codice, ma nn c'è molto da vedere, perchè il problema nn è in quello che fa, che è giusto, ma nelle poche righe aggiunte per la progressbar..........

Beh, a meno di bug nel sistema operativo, se c'è un errore allora deve essere nel tuo codice. Può essere un errore più legato al linguaggio o come sospetti legato ai concetti alla base di android, in ogni caso per chi ti legge il miglior modo di compredere è vedere il codice.  :-P

Penso mi manchi qualche concetto di base sui thread e sull'ordine cn cui sn eseguite le istruzioni.......presumo ad esempio che ci sian di base almeno 2 thread esistenti, uno per la GUI e uno per il codice che scriviamo

No. Se non crei esplicitamente thread, il codice che metti nella oncreate viene eseguito nel thread della GUI.

Ora sto intanto dando un occhiata alla doc ufficiale su handlers e Asynktask..........per capire a che servon così domani potrò chieder con più precisione e capire meglio :)

Ti invito nuovamente a dare un'occhiata anche al tutorial che ti ho linkato, c'è il codice completo di una piccola applicazione che fa uso degli AsyncTask e delle ProgressDialog. E nell'apposita sezione c'è anche un tutorial sui thread.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

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:Progressbar.....servon thread e async?Help
« Risposta #5 il: 17 Maggio 2011, 00:13:51 CEST »
0
1)Cosa cambia in soldoni tra usare un asynctask e usare handler cn messaggi? NN fan la stessa cosa, ovvero permettere a un thread worker di eseguire un azione e se serve modificare qualcosa del thread UI?

Concettualmente fanno la stessa cosa. Sono due modi diversi, con diversi livelli di astrazione. Diciamo che l'AsyncTask ha più automatismi.

2)La mia applicazione funziona x ora tutta sul thread principale che da quanto ho capito è sbagliato giusto? Dovrei quindi modificarla in modo che appena la lancio apra un secondo thread che interroga il db , si fa tornare i dati e poi cn uno dei 2 modi sopra li passa al thread principale affinche riempa la listview?E' corretto come ragionamento?

Esatto, è concettualmente sbagliato gravare sul thread principale, anche perchè se lo occupi per più di 5 secondi l'applicazione ti viene chiusa automaticamente (Application Not Responding Force Close). E' corretto come dici affidare le operazione di una certa durata a thread secondari.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline sgotenks

  • Utente junior
  • **
  • Post: 57
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Geeksphone zero
  • Sistema operativo:
    Windows
Re:Progressbar.....servon thread e async?Help
« Risposta #6 il: 17 Maggio 2011, 09:09:00 CEST »
0
Ok, quindi ho fatto un passo avati nel capire questo argomento. Cavoli ma quindi se la rete è lenta e ci impega più di 5 second mi da quela notifica?
Mi potresti chiarire ancora un paio di punti?

1) Ho appena letto che tra i mattoncini fondamentali di android oltre ad activity, content provider ecc.....ci sn i service che eseguono cose in background mentre sulla gui avviene qualcos'altro. Mi sembra simile al concetto di thread o mi sbaglio? QUindi la aprte che dicevo sopra di connettersi al db è meglio cn un thread o cn un service?

2)Riguardo ai thread, il task async deve esser nella stessa classe della mia attivity(a livello di file) o può anche esser in un altro file? Perchè il metodo  scaricaNuoviDatiDalDbeAggiornaLaListView() attualmente sta su un'altra classe in un file a se che ritorna un nuovvo blocco di dati e aggiorna la listview.....e con gi handlers, anche li stesso file?

3)I thread posson esser lanciati quante volte mi va o sn un colpo e via, perchè mi sembrava di aver letto che una volta eseguito poi è andato mentre nel mio caso l'operazione di chiedere dati al db la farei tante volte......

4)QUano da un activity lncio una subactivity cosa succede a livello di thread? Resta sempre in uso lo stesso o ognuna ha si suo? E ci può esser una ccomunicazione tra activity della serie quella che sto mostrando collabora cn un altra che in quel preciso momento è in pausa?
« Ultima modifica: 17 Maggio 2011, 09:13:36 CEST da sgotenks »

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:Progressbar.....servon thread e async?Help
« Risposta #7 il: 17 Maggio 2011, 09:18:37 CEST »
0
Ok, quindi ho fatto un passo avati nel capire questo argomento. Cavoli ma quindi se la rete è lenta e ci impega più di 5 second mi da quela notifica?
Mi potresti chiarire ancora un paio di punti?

1) Ho appena letto che tra i mattoncini fondamentali di android oltre ad activity, content provider ecc.....ci sn i service che eseguono cose in background mentre sulla gui avviene qualcos'altro. Mi sembra simile al concetto di thread o mi sbaglio? QUindi la aprte che dicevo sopra di connettersi al db è meglio cn un thread o cn un service?

2)Riguardo ai thread, il task async deve esser nella stessa classe della mia attivity(a livello di file) o può anche esser in un altro file? Perchè il metodo  scaricaNuoviDatiDalDbeAggiornaLaListView() attualmente sta su un'altra classe in un file a se che ritorna un nuovvo blocco di dati e aggiorna la listview.....e con gi handlers, anche li stesso file?

3)I thread posson esser lanciati quante volte mi va o sn un colpo e via, perchè mi sembrava di aver letto che una volta eseguito poi è andato mentre nel mio caso l'operazione di chiedere dati al db la farei tante volte......


Ok, ti rispondo brevemente, però tieni conto che le tue domande sono Frequently Asked Question gettonatissime, e sono state tutte già risposte nei tutorial che ci sono su anddev.it.  :-)

1) AsyncTask, Thread e Service sono strumenti parzialmente sovrapposti, la scelta di quale usare dipende se ti serve qualcosa da usare rapidamente e una tantum (AsyncTask) o per lungo tempo magari anche senza che l'activity sia aperta (Service). Una letturina della documentazione ufficiale Android toglie molti dubbi in proposito.

2) Può essere in quanti file vuoi, ma questo è più che altro una domanda Java.

3) Anche questa è domanda Java, una istanza di un Thread() può essere avviata solo UNA volta. Quando muore devi ricreare l'istanza e riavviarla.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline sgotenks

  • Utente junior
  • **
  • Post: 57
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Geeksphone zero
  • Sistema operativo:
    Windows
Re:Progressbar.....servon thread e async?Help
« Risposta #8 il: 17 Maggio 2011, 09:59:19 CEST »
0
STudierò bene quuesti argomenti e ci raggionerò su..tornando al problema di base del thread questo eraa:
Codice (Java): [Seleziona]
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {
                ProgressBar progressBar =(ProgressBar)findViewById(R.id.footer_bar);
                progressBar.setVisibility(View.VISIBLE);
                if (position != parent.getLastVisiblePosition())
                {
                Intent intent = new Intent(FinestraPrincipaleActivity.this,Application_activity.class);
                startActivity(intent);
                progressBar.setVisibility(View.INVISIBLE);
                }
                else
                {
                        p.incrementa_pagina();
                        this.creaListaApp(p.parse_lista_app());
                        my_adapter.notifyDataSetChanged();
                        progressBar.setVisibility(View.INVISIBLE);
                }
               
               
        }

Ho una lista di app, cn alla fine un footer che dice "clicca per visualizzare più applicazioni. Se clicco su un elemento della listview che è una app, finisco nella prima parte dell'if qua sopra, che lancia una sottoattività che mostrerà i dettagli dell'app, se clicco sul footer finisco nel secodo cado che chiede dati nuovi a una classe apposta e aggiorna la listview.

QUesto avviene tutto in un unico thread............dopo  lo risolverò ma ho bisogno di ragionarci bene, per ora concentriamoci sulla progressbar.
Il footer è fatto così:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:id="@+id/footer">
        <TextView
               android:text="Mostra altre applicazioni"
               android:textAppearance="?android:attr/textAppearanceSmall"
               android:layout_centerInParent="true"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:id="@+id/footer_text">
        </TextView>
        <ProgressBar
                android:layout_alignParentRight="true"
                android:layout_height="wrap_content"
                android:id="@+id/footer_bar"
                android:layout_width="wrap_content"
                android:visibility="invisible">
        </ProgressBar>
</RelativeLayout>
Le due operazioni sopra elencate impiegan entrambe un paio di secondi io vorrei che in questo frangente la progressbar che è invisibile venisse mostrata e una volta fatta l'operazione resa di nuovo invisibile. Come ti dicevo però questo nn avviene mai.....la mia impressione è che sia più il tempo richiesto x rendere la progressbar visibile che x fare il resto e quindi ==> la rirende invisibile prima ancora che sia stata mostrata.....ma è sl una mia deduzione....

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:Progressbar.....servon thread e async?Help
« Risposta #9 il: 17 Maggio 2011, 10:25:17 CEST »
0
Le due operazioni sopra elencate impiegan entrambe un paio di secondi io vorrei che in questo frangente la progressbar che è invisibile venisse mostrata e una volta fatta l'operazione resa di nuovo invisibile. Come ti dicevo però questo nn avviene mai.....la mia impressione è che sia più il tempo richiesto x rendere la progressbar visibile che x fare il resto e quindi ==> la rirende invisibile prima ancora che sia stata mostrata.....ma è sl una mia deduzione....

Non ti do' per certo quello che ti dico, però da quanto ho compreso io del framework alla base di Android, le operazioni sulla UI vengono ovviamente eseguite nel main thread, però credo ci sia qualcosa di analogo a code di messaggi. Anche la setVisibility() dovrebbe in generale cambiare la visibilità di un oggetto, quindi invalidare la sua rappresentazione grafica, e accodare un messaggio di refresh grafico. Se dopo aver lanciato la setVisibility(), monopolizzi il thread con l'esecuzione del tuo codice, non mi stupisce che non venga processato il refresh grafico.

Puoi provare facilmente il concetto togliendo il codice pesante, una cosa del genere (scrivo senza provare):

Codice (Java): [Seleziona]
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {
                ProgressBar progressBar =(ProgressBar)findViewById(R.id.footer_bar);
                if (getVisibility()!=View.VISIBLE) progressBar.setVisibility(View.VISIBLE);
                else progressBar.setVisibility(View.INVISIBLE);
        }


EDIT: Se sei interessato a scavare dentro Android  ;-) qua trovi il codice sorgente di ProgressBar.java
android.git.kernel.org Git - platform/frameworks/base.git/blob - core/java/android/widget/ProgressBar.java
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline sgotenks

  • Utente junior
  • **
  • Post: 57
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Geeksphone zero
  • Sistema operativo:
    Windows
Re:Progressbar.....servon thread e async?Help
« Risposta #10 il: 17 Maggio 2011, 10:38:31 CEST »
0
Ma immaginiamo ci sia questa coda......essendo la mia app mono thread nel momento in cui la prima itruzione che gli do è di render visibile la Progressbar, questa dovrebbe nella coda esser davanti alle aaltre cose che gi dico di fare dopo ==> prima dovrebbe renderla visibile e poi fare il resto :(


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:Progressbar.....servon thread e async?Help
« Risposta #11 il: 17 Maggio 2011, 11:29:56 CEST »
0
Ma immaginiamo ci sia questa coda......essendo la mia app mono thread nel momento in cui la prima itruzione che gli do è di render visibile la Progressbar, questa dovrebbe nella coda esser davanti alle aaltre cose che gi dico di fare dopo ==> prima dovrebbe renderla visibile e poi fare il resto :(

In realtà la situazione è diversa, tu non accodi il tuo codice. Tu esegui il tuo codice nel thread che si occupa di prelevare eventi dalla coda ed eseguirli. Se blocchi quel thread con il tuo codice, nessun evento viene prelevato dalla coda e quindi l'interfaccia si congela. Penso che se tu implementassi un handler potresti effettivamente accodare il tuo codice dopo la setVisibility().

Ti rinnovo l'invito :-) a non cercare di piegare Android alla tua visione delle cose, è una strada tutta in salita. E' di gran lunga più semplice ed efficace usare gli strumenti pensati esplicitamente per fare queste cose. Quando io mi sono trovato in questi casi, ho messo da parte la mia applicazione e la mia problematica per qualche giorno, ed ho sviscerato l'argomento (AsyncTask, Thread) con applicazioni di prova pensate solo per capire e provare i concetti. Una volta padroneggiato lo strumento, sono tornato all'applicazione originaria.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline sgotenks

  • Utente junior
  • **
  • Post: 57
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Geeksphone zero
  • Sistema operativo:
    Windows
Re:Progressbar.....servon thread e async?Help
« Risposta #12 il: 17 Maggio 2011, 11:38:55 CEST »
0
Eureca....così funziona
Codice (Java): [Seleziona]
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {
                progressBar =(ProgressBar)findViewById(R.id.footer_bar);
                progressBar.setVisibility(View.VISIBLE);
                if (position != parent.getLastVisiblePosition())
                {
                        Intent intent = new Intent(FinestraPrincipaleActivity.this,Application_activity.class);
                        startActivity(intent);
                        progressBar.setVisibility(View.INVISIBLE);
                }
                else
                {
                        new Thread(new Runnable()
                        {
                     public void run()
                     {
                         p.incrementa_pagina();
                                 creaListaApp(p.parse_lista_app());
                                 mHandler.post(new Runnable() {
                        public void run() {
                                my_adapter.notifyDataSetChanged();
                        }
                                 });
                                 mHandler.post(new Runnable() {
                        public void run() {
                                progressBar.setVisibility(View.INVISIBLE);
                        }
                                 });

                         // Update the progress bar
                         
                     }
                 }).start();
                       
                       
                }
               
               
        }
Ho risolto soo l'else ora vado con l'if.
In pratica creo 1 thread che si occupa di prendere i nuovi dati e alla fine dice di rirender invisibile la progressbar............ho usato un handler......e questo bel metodo post che mette runnuble in coda e che EVIDENTEMENTE l'handler si preleva da solo.........x quel poco che avevo capiito degli handler pensavo che si dovessero creare dei messaggi cn un "testo" e dall'altra parte l'handler i scaricava e in base al testo faceva qualcosa, ma sto metodo post sembra spingere :)

Ti sembra "pulita" o avrei fatto meglio cn async?

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:Progressbar.....servon thread e async?Help
« Risposta #13 il: 17 Maggio 2011, 11:50:38 CEST »
0
Ti sembra "pulita" o avrei fatto meglio cn async?

Concettualmente è corretto ed anche analogo ad usare un AsyncTask: crei un thread per il processing pesante, poi alla fine trasmetti i risultati tramite handler. Per il resto non sono un purista dello stile, importante è comprendere la logica e adattarsi.  :-)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline sgotenks

  • Utente junior
  • **
  • Post: 57
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Geeksphone zero
  • Sistema operativo:
    Windows
Re:Progressbar.....servon thread e async?Help
« Risposta #14 il: 17 Maggio 2011, 15:17:56 CEST »
0
Mi si è aperto un mondo.......in queste ore ho fatto cose molto fiche.......e preso dalla gioia ho riempito la mia app di thread fatti come sopra ovvero anonime classi runnabili, o per lo meno ovunque ho ritenuto ce ne fosse bisogno...........funziona tutto molto bene, mi è sorto però un problema, ora la mia app è "multitasking" il che cosa comporta, rimanendo fedeli all'esempio sopra, l'utente potrebbe cliccare su "mostra altre appicazioni" che avvia un suo thread e fulmineamente cliccare poi su una applicazione della lista o su un altro comando della mia interfaccia gestito da un thread........==> ottengo dei mezzi pasticcci perchè si accavallano più operazioni alla volta, daando strani risultati o a volte crasha proprio.......
Alcune cose IO aveevo deciso di risolvere cn un progressdiaalog cche nn lasci all'utente la possibilità di fare altro fin tanto che una cosa nn è finita, ma colui che vi è sopra di me si è espresso così:
preferirei che se clicchi da qualchee altra parte il thread in corso venga killato e parta l'atro atrimenti ll'utente deve aattendere ogni volta che termini quanto in corso e se ha sbagliato a cliccare o ha cambiato idea è palloso......

Te come gestiresti questa cosa? Con dei syncronized sui metodi che potrebbero esser usati da  thread diverssi ad esempio? Come faccio a dire a tutti i thread a parte quello della gui di morire o fermarsi?
« Ultima modifica: 17 Maggio 2011, 15:20:08 CEST da sgotenks »