2011-04-26 11 views
7

Actualmente uso una Actividad para subir una imagen a la web, estoy usando AsyncTask y todo está funcionando muy bien. Actualmente uso una Actividad para lograr esto, básicamente la actividad permite al usuario ingresar algunos detalles, tomar una foto y luego enviar, se muestra un cuadro de diálogo de progreso hasta que se recibe una respuesta. En las conexiones E o G todo el proceso puede ser bastante largo (más de un minuto). No es posible finalizar la actividad y volver a la actividad anterior (que es lo que quiero) hasta que se reciba una respuesta.Carga de imágenes de Android: ¿usar actividad o servicio?

Qué opciones tengo. Actualmente, si presiono el botón de inicio el proceso funciona bien y continúa subiendo, ¿se puede minimizar la programabilidad de la aplicación? . Veo muchos problemas con este enfoque, por ejemplo, si la actividad se cierra o si ocurre un error.

El único enfoque que puedo pensar es mover el código de carga real a un servicio, reunir la información utilizando la actividad y permitir que la actividad comience un nuevo servicio para cada carga. Luego puedo notificar al usuario sobre el éxito o el fracaso usando el NotificationManager y manejar la repetición en el servicio.

Me di cuenta de que al compartir una imagen de la galería en Facebook, la actividad se cierra inmediatamente y el usuario recibe comentarios a través de una notificación. Supongo que este enfoque utiliza un servicio para subir la imagen a Facebook.

Cualquier ayuda/consejo sería muy apreciada.

Saludos

Respuesta

14

sugiero que utilice la siguiente configuración:

  1. Use su actividad para preparar (configurar/configuración) lo que el usuario quiere hacer (por ejemplo, elegir la imagen que quiere cargar y la carpeta de destino)
  2. Cuando el usuario presiona "Enviar", invoca un servicio que realizará la tarea de carga. Notaré algunas ventajas de esto más adelante)
  3. Cuando el servicio finalice, cree una notificación para mostrar los resultados. Debería utilizar OnGoingNotification para que el usuario sepa que el archivo se está cargando (también puede tener un indicador de progreso)

Usar un servicio en lugar de una Actividad tiene algunas ventajas. Por ejemplo, no tiene que preocuparse por los cambios de configuración (como cambiar la orientación del dispositivo), no "bloquea" al usuario en una actividad donde no tiene nada que hacer, etc.

Uploading doesn No requiere una interfaz de usuario así que usar una actividad no es la mejor manera de hacerlo.

En resumen: utilizar un servicio

+0

Gracias por su respuesta detallada. Tenía la sensación de que sería la mejor manera de lograrlo, gracias por la confirmación :-) – Bear

Cuestiones relacionadas