Qualcuno di voi si è mai trovato ad utilizzare un toast da un thread di background?
Io mi trovo nella situazione in cui mentrre la mia activity è running avvio un thread di background per salvare un file su sdcard, quando il salvataggio è terminato sempre nel thread, visualizzo un toast.
L'app crasha e mi dice che per fare ciò, il thread deve essere un Looper. Sbirciando nella rete ho visto che per rendere un thread looper si deve fare essenzialmente:
public void run() {
Looper.prepare();
//qui effettuo le mie operazioni...
//qui visualizzo il toast
Looper.loop();
Looper.myLooper().quit();
}
Così pare funzionare, ma non capisco il significato e l'uso di questo Looper. Infatti avviando l'app in modalità debug e attivando la modalità "Thread" del DDMS, il thread che effettua questo salvataggio non muore, ma rimane wait, probabilmente perchè rimane in questo loop., infatti Looper.myLooper().quit() non viene mai eseguito. Mi ritrovo così ad avere una serie di thread in stato di wait, uno per ogni salvataggio su sdcard, cosa non buona in termini di risorse.
Cosa dovrei fare secondo voi? Terminarlo, ma come?
Rimane la domanda... ma che senso hanno questi Looper? io non li ho capiti. Mi affido alla vostra esperienza.