CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: elmegio con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: megthebest con ben 5 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 31 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

Broadcast receiver e salvataggio dati in file

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Jun 2011
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Broadcast receiver e salvataggio dati in file

    Intanto ciao a tutti... sono nuovo del forum.. spero di trovare qualche anima pia che possa darmi delle delucidazioni su una cosa che non mi torna.
    Praticamente ho una classe BroadcastReceiver che mi intercetta l'arrivo di sms e im base al testo di questi svolge diverse funzioni come aprire una schermata o salvare dei dati. Il problema sta appunto nel salvare i dati, infatti usando questo codice che è una sub:
    codice:
    /******************************************************************************
    FUNZIONE PER SCRIVERE UN FILE
    *******************************************************************************/
    	public void write(String file1, String data){
    		FileOutputStream fOut = null;
    		OutputStreamWriter osw = null;
    
    		try{
    		fOut = openFileOutput(file1,MODE_PRIVATE); 
    		osw = new OutputStreamWriter(fOut);
    		osw.write(data);
    		osw.flush();
    		
    		}
    		catch (Exception e) { 
    		
    		}
    		finally {
    		try {
    		osw.close();
    		fOut.close();
    		} catch (IOException e) {
    		}
    		}
    		}
    praticamente mi da errore nell'istruzione openFileOutput(file1,MODE_PRIVATE).
    Questo codice funziona in un'altra classe ma non riesco a farla girare nel BroadcastReceiver. Perchè? Come posso fare per scrivere un file direttamente dall' onReceiver del broadcastreceiver?

    Scusate il giro di parole ma a quest'ora non mi riesce di meglio!

  2.  
  3. #2
    Senior Droid L'avatar di maurilios


    Registrato dal
    Dec 2009
    Messaggi
    328

    Ringraziamenti
    7
    Ringraziato 20 volte in 19 Posts
    Predefinito

    Che errore ti da' esattamente?

  4. #3
    Baby Droid


    Registrato dal
    Jun 2011
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Non la considera un‘istruzione valida sll‘interno di. OnReceive del broadcastreceiver...vorrei sapere come fare...



    Inviato dal mio LG-P990 usando Androidiani App

  5. #4
    Androidiano L'avatar di Jordano


    Registrato dal
    Nov 2010
    Località
    Reggio Emilia
    Messaggi
    263
    Smartphone
    Nexus S / HTC Magic 32a

    Ringraziamenti
    1
    Ringraziato 48 volte in 46 Posts
    Predefinito

    dentro un broadcast receiver non dovresti scrivere file perchè è un operazione che può metterci del tempo e il broadcast receiver è fatto per essere responsive, non aspettare che tu magari scrivi mb di roba (anche se non è il tuo caso).

    Ora non riesco a guardare in giro ma c'è il caso che siano proprio state vietate all'interno del broadcast receiver operazioni time consuming come quella che stai facendo, per evitare i vari Application Not Responding...

  6. #5
    Baby Droid


    Registrato dal
    Jun 2011
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ma allora cosa mi conviene fare? Per esempio creare un Thread che esegua la funzione di scrittura e poi venga chiuso... o qualcosa di simile...

    C'è la possibilità di richiamare una Activity senza che questa esegua necessariamente la visualizzazione di una Layout?
    In questo modo potrei inserire la funzione di scrittura del file nell'activity...
    Ultima modifica di formattato; 14-06-11 alle 19:28

  7. #6
    Androidiano L'avatar di Jordano


    Registrato dal
    Nov 2010
    Località
    Reggio Emilia
    Messaggi
    263
    Smartphone
    Nexus S / HTC Magic 32a

    Ringraziamenti
    1
    Ringraziato 48 volte in 46 Posts
    Predefinito

    Perchè non dovresti fare entrambe le cose che rendono l'implementazione poco solida:

    -Lanciare un Activity senza interfaccia grafica

    un Activity senza interfaccia grafica non è in foreground, non sta interagendo con l'utente quindi verrà facilmente stoppata o peggio killata tutta l'applicazione dal sistema

    -Creare un thread nel broadcast receiver

    Tu crei il tuo thread, il broadcast receiver finisce la sua esecuzione e viene distrutto.. il tuo thread non si sa più bene dov'è e che fine abbia fatto.. Magari una volta che il sistema ha eseguito il tuo onReceive pensa bene di killarti tutto il processo della tua applicazione, perchè non hai più componenti in esecuzione.

    La soluzione secondo me è un Service in cui eseguire il lavoro, precisamente un IntentService così non devi neanche curarti di fare le operazioni su un altro thread in background perchè ci pensa già tutto lui.

    Vedi se trovi qualche tutorial, sicuramente ce ne sono molti su come si usa.

  8. Il seguente Utente ha ringraziato Jordano per il post:

    formattato (14-06-11)

  9. #7
    Baby Droid


    Registrato dal
    Jun 2011
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Grazie Jordano ho risolto col tuo consiglio!

  10. #8
    Senior Droid L'avatar di maurilios


    Registrato dal
    Dec 2009
    Messaggi
    328

    Ringraziamenti
    7
    Ringraziato 20 volte in 19 Posts
    Predefinito

    Quote Originariamente inviato da Jordano Visualizza il messaggio
    La soluzione secondo me è un Service in cui eseguire il lavoro, precisamente un IntentService così non devi neanche curarti di fare le operazioni su un altro thread in background perchè ci pensa già tutto lui.

    Vedi se trovi qualche tutorial, sicuramente ce ne sono molti su come si usa.
    Ottimo suggerimento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy