studio startactivity intent developer desde boton activity abrir android android-intent

intent - startactivity android studio



Más explicaciones sobre IntentService (3)

Estaba tratando de obtener el propósito de IntentService , ¿y cuándo debería usarlo?

Traté de entenderlo desde la API, pero no con suficientes detalles sobre eso.

¿Hay alguna analogía entre esto y ejecutar una tarea larga en un hilo de trabajo?

Cualquier explicación adicional y muestras sobre por qué usaría IntentService sería muy bienvenido.

Gracias,

rayo.


¿Hay alguna analogía entre esto y ejecutar una tarea larga en un hilo de trabajo?

IntentService maneja el hilo por ti.

¿Cuándo debería usarlo?

Algunos casos de uso:

  • Para manejar alarmas activadas por AlarmManager
  • Para manejar otros eventos atrapados por un BroadcastReceiver registrado manifiestamente
  • Para manejar eventos activados por un widget de aplicación (actualizaciones basadas en tiempo, clics de botón, etc.)

Los servicios Android son el caballo de batalla de la plataforma. Permiten a las aplicaciones ejecutar tareas de larga ejecución y dar funcionalidad a aplicaciones externas. Desafortunadamente, dado que se ejecutan en segundo plano y no son visualmente obvios para los desarrolladores, pueden ser una fuente de grandes dolores de cabeza. Si ha visto una ANR (actividad que no responde) o se ha preguntado por qué un servicio se estaba ejecutando cuando no debería, un problema podría ser un servicio mal implementado.

El ANR temido Echemos un vistazo a los dos principales servicios de errores causa: ANR. Estos interrumpen la experiencia del usuario y le dan al usuario la opción de forzar el cierre. Esto puede provocar que el usuario desinstale su aplicación o que el proceso en segundo plano se encuentre en un estado de interrupción. La razón de esto es que los servicios se inician desde el hilo de llamada; por lo general, este es el hilo de UI. Siempre ejecutando servicios. Aunque Android proporciona mecanismos para programar y detener servicios, no todos los desarrolladores siguen las directrices. De hecho, muchos de los ejemplos que he visto ni siquiera mencionan la interrupción de su servicio. Esto puede provocar un rendimiento general más lento, confusión del usuario y pérdida de batería. Me imagino que los desarrolladores de Android en Google vieron que esto se estaba convirtiendo en un problema y presentaron la clase IntentService en Android 1.5. La clase IntentService soluciona los problemas anteriores y abstrae toda la gestión de subprocesos y el servicio que se detiene del desarrollador. Es una forma muy fácil y poderosa de descargar tareas del hilo principal de la aplicación.


Lo usaría siempre que el caso de uso sea una tarea específica que llevará mucho tiempo pero tiene una finalización regular. Por ejemplo, los casos de uso deletreados anteriormente y también las tareas habituales, tales como: -sincronizar -descargar recursos -pulsar datos de diversas fuentes y almacenarlos

No recomendaría usarlo cuando el servicio se ejecute por mucho tiempo en la naturaleza y no tenga un final definido. He visto esto hecho y es un error porque la forma en que las personas terminan eludiendo el hecho de que IntentService se detiene es crear bloqueos para evitar que handleIntent finalice o si no quieren bloquear las próximas solicitudes en línea, se reiniciarán enviando startService nuevamente a ellos mismos. Esto es horrible y para este tipo de escenarios, solo debe usar un servicio Android normal de ejecución prolongada y asegurarse de que está obligado (probablemente AUTO_CREAR) y manejar el trabajo fuera del hilo principal.