Autore Topic: Come posso gestire una indeterminate dialog?  (Letto 631 volte)

Offline Albe85

  • Utente junior
  • **
  • Post: 102
  • Respect: +1
    • Mostra profilo
Come posso gestire una indeterminate dialog?
« il: 28 Novembre 2010, 12:20:11 CET »
0
Buongiorno.
Spiego qual è il mio problema.
All'apertura del mio programma chiedo attraverso un alert dialog se si vuole attivare il wi-fi ed effettuare la sincronizzazione dei dati, oppure se si vuole utilizzare il programma in modalità wi-fi.

Per ora mi sto limitando a creare questo controllo all'apertura mentre il resto dell'activity continua il suo lavoro e quindi la sincronizzazione con il server nel frattempo che si attiva il wi-fi va a vuoto, cioè nella mia listview dell'activity vengono caricati dei dati da un db sqlite che però non sono aggiornati.

La sincronizzazione dei dati con il server la chiamo e la eseguo nell'activity principale  tramite due thread che chiamo nell'activity principale nel seguente modo:
Codice (Java): [Seleziona]
Thread cThread = new Thread(new TCPClientArticoli());
                cThread.run();
                cThread.stop();
               
                Thread cThread2 = new Thread(new TCPClientLogSpesa());
                cThread2.run();
                cThread2.stop();  

dove un thread ad esempio un thread del tipo TCPClientArticoli() è il seguente:
Codice (Java): [Seleziona]
public class TCPClientArticoli implements Runnable {

       
       
    public void run() {

         try {

                 InetAddress serverAddr = InetAddress.getByName("192.168.0.107");//TCPServer.SERVERIP
                 Log.d("TCP", "C: Connecting to server...");
                 //Socket socket = new Socket(serverAddr, TCPDesktopServer.SERVERPORT);
                 Socket socket = new Socket(serverAddr, 4444);
                 String message = "INVIAMI IL FILE ARTICOLI.XML";
                         
                     try {
                         
                         Log.d("TCP", "CLIENT: Sending: '" + message + "'");
                         PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
                         out.println(message);
                               
                     System.out.println("Ricezione file in corso articoli.xml..");
                     DataInputStream inArt = new DataInputStream(socket.getInputStream());
                     File sdcardDirArt = Environment.getExternalStorageDirectory();
                         File myFileArt = new File(sdcardDirArt,"articoli.xml");
                     FileOutputStream outArt = new FileOutputStream(myFileArt);
                     byte bufferArt[] = new byte[1024];
                     int iArt;
                     while ((iArt = inArt.read(bufferArt,0,bufferArt.length)) != -1){
                     System.out.println("ci sono");
                     outArt.write(bufferArt,0,iArt);
                     }
                     outArt.flush();
                     outArt.close();
                     System.out.println( "Ricezione completata!" );

                     Log.d("TCP", "C: Sent.");
                     Log.d("TCP", "C: Done. DATI INVIATI!");
                           
             } catch(Exception e) {
                 Log.e("TCP", "S: Error", e);
                      } finally {
                        socket.close();
                     
                      }
         } catch (Exception e) {
              Log.e("TCP", "C: Error", e);
         }
    }//chiusura metodo run
   
}//chiusura public class TCPClient implements Runnable

Quello che vorrei realizzare io sarebbe qualcosa del tipo:
alert dialog inziale ---> azione attiva wi-fi ------> avviene attivazione wi-fi e solo dopo che il wi-fi è attivo avviene la sincronizzazione con il server e vengono caricati gli elementi nella listview.

alert dialog inziale ----> azione modalità uso off-line -----> avviene caricamento listview con i dati presenti nel db (dati non sincronizzati)

Ad ogni azione vorrei far corrispondere la comparsa di un indeterminate dialog di una durata che imposterei io di conferma del caricamento nella listview dei dati.

Che consiglio mi dareste per realizzare una situzione simile?
Vi ringrazio
ciao