Estoy empezando con threads en Android, y cada vez que intento llamar a un método del Thread desde ApplicationMain, el IDE se queja y me lanza error de
Cannot resolve symbol... (y el nombre de cualquier método del thread)
Os pongo el código lo más simplificado posible, a ver si es que me he equivocado anidando clases o métodos, o qué hago mal.
nazareth escribió:Define la variable fuera, pero instanciala dentro de un método (new Runnable...) y para lanzar el hilo igual, dentro de un método.
A ver si me aclaro:
1. Codifico una clase nueva (clase1) que implemente runnable y dentro del run() meto lo que quiero que haga. 2. Tengo que crear un Thread pasándole como argumento una instancia de clase1 3. Tengo que llamar al método start() del Thread.
El punto 1 está claro (creo). La cuestión es, ¿en qué punto del código MainActivity.java hago los puntos 2 y 3? ¿En onCreate(), o dónde?
Para mí el onCreate() es el equivalenre al clásico void Main() de C. El punto de entrada a la aplicación.
El thread lo creas donde te haga falta, si es en onCreate, pues ahí. Si es un thread del cual no requieres un control nada mas que para pararlo, puedes incluso no guardar una referencia a él, usas un booleano para parar el thread y listo, tal y como tienes hecho.
Para crear el thread puedes implementar Runnable o extender Thread. Si quieres tener el control del thread dentro, tendras que crearte una variable "Thread t" y en el constructor hacer "t = this;".
El problema de los threads es en el tema de actualizar la interfaz, por eso se opta por usar asynctask, o pasarte la una referencia al thread de la actividad principal.