|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
Intent en thread??
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... |
|
|
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
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... |
|
#4
|
||||
|
||||
|
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.
|
|
#5
|
||||
|
||||
|
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! |
|
#6
|
||||
|
||||
|
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. |
|
#7
|
||||
|
||||
|
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...
|