Ver la Versión Completa : Intent en thread??
jonathanval
13/09/13, 17:30:44
Antes de todo gracias por vuestro tiempo!!
Ahora os comento: Tengo creado un thread con un sleep, cuando pasa un tiempo lanza otro método y éste a su vez otro, ésto se repite varias veces hasta que se llega a un límite de veces y a través de un intent pasamos a otra activity, pero lo que pasa es que nunca pasa a otra activity, sino que la app hace crash...
Me pone una serie de errores, siendo el primero java.lang.Runtimeexception: Unable to pause Activity... java.lang.IllegalException
Cual puede ser el error? Que estoy desesperado...
kriogeN
13/09/13, 18:31:20
Lanza la Activity desde un Handler. O mejor aún, usa un AsyncTask.
Los cambios en el UI se deben hacer desde el UI Thread. Ya sea lanzar una Activity nueva, cambiar un Fragment, o actualizar una View.
jonathanval
13/09/13, 20:10:46
Ya lo he intentado, pero sigue dando el mismo error...
Cuando llega el momento de pasar a la otra activity entro en el asyntask pero sigue pasando lo mismo. No lo entiendo...
kriogeN
13/09/13, 20:28:00
Pero a ver... ¿llamas al AsyncTask desde el Thread? En ese caso tienes el mismo problema que antes, porque sigues ejecutando el Post del AsyncTask en el Thread, y no en el UI Thread.
jonathanval
13/09/13, 20:53:14
Si, creo que eso es lo que estoy haciendo mal... Pero lo que no sé es como ejecutarlo desde fuera, es decir, yo estoy dentro de un "ciclo" y cuando llegue un contador a 20 ejecuto ese asyntask (como lo ejecuto desde fuera?)
Gracias!
kriogeN
13/09/13, 21:37:03
Haciendo que el "hilo" sea el "doInBackground" del AsyncTask, y cuando termina el contador simplemente no haces nada. Se ejecutará el "onPostExecute", y ahí es donde lanzas la nueva Activity.
Así que en el hilo principal en vez de crear el Thread y lanzarlo lo que haces es crear el AsyncTask y ejecutarlo.
jonathanval
14/09/13, 06:50:43
A ver si es verdad eso de " A quién madruga dios le ayuda..." jajaja Porque ayer seguía sin salirme eso. Y hoy he intentado un cambio pero ná de ná...
Lo he modificado y he puesto asyntask donde antes había threads y handlers, pero creo que el problema está en el reconocimiento de voz. Me explico, abro el reconocimiento de voz a través del siguiente método:
protected void CogerSonido() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MO DEL, "es-ES");
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PAC KAGE,
"voice.recognition.test");
sr.startListening(intent);
d = new Dialog(CogerLoHablado.this);
d.requestWindowFeature(Window.FEATURE_NO_TITLE);
d.setContentView(R.layout.hablar);
d.show();
}
y después el hilo entra en la clase RecognitionListener que es la que se encarga de recibir el resultado de lo hablado. Y ahora (tras unas cuantas veces hecho este proceso) es cuando intento lanzar un intent para saltar a otra activity desde el onResults.
Un saludo! Y muchas gracias por anticipado y a ver si veis lo que yo soy incapaz de ver...
Pd: Kriogen, si el error está en el Asyntask yo no consigo ver como tengo que hacerlo...:loco:
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.