Home Menu

Menu



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  
Viejo 06/11/12, 19:47:54
Avatar de afranco2000
afranco2000 afranco2000 no está en línea
Usuario novato en la web
Mensajes: 2
 
Fecha de registro: nov 2012
Mensajes: 2
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Descarga de archivos en android 4.1

public
boolean DescargaArch(String NArch ) {
try {

URL url =


new URL(NArch);

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setRequestMethod(


"GET");
urlConnection.setDoOutput(true);


//al llegar aqui marca error y se sale de la app
urlConnection.connect();
...
...
Estoy programando con eclipse , si alguien me puede ayudar ya que en un emulador con la versión 2.3 funciona correctamente y al probarlo con la versión 4.1 falla. Gracias
Responder Con Cita


  #2  
Viejo 06/11/12, 20:32:27
Avatar de hecsagis
hecsagis hecsagis no está en línea
Desarrollador
Mensajes: 266
Compra y venta: (1)
 
Fecha de registro: mar 2009
Mensajes: 266
Modelo de smartphone: Nexus 5
Tu operador: Vodafone
Mencionado: 0 comentarios
Tagged: 0 hilos
Es porque estás bloqueando el hilo principal y no recuerdo a partir de que versión (3.0 o 4.0) si bloqueas el hilo principal la app peta.

Tienes que ejecutar la descarga en un AsyncTask o en un Thread
Responder Con Cita
  #3  
Viejo 06/11/12, 21:05:29
Avatar de Celtium
Celtium Celtium no está en línea
Miembro del foro
Mensajes: 432
 
Fecha de registro: may 2010
Mensajes: 432
Modelo de smartphone: Nexus One, 4
Mencionado: 0 comentarios
Tagged: 0 hilos
desde la version 2.3.3 android tiene un gestor de descargas. va muy bien.

;)
Responder Con Cita
  #4  
Viejo 06/11/12, 21:25:07
Avatar de afranco2000
afranco2000 afranco2000 no está en línea
Usuario novato en la web
Mensajes: 2
 
Fecha de registro: nov 2012
Mensajes: 2
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
"Tienes que ejecutar la descarga en un AsyncTask o en un Thread "
Si me puedes explicar a que se refiere esto por favor.

"desde la version 2.3.3 android tiene un gestor de descargas. va muy bien."
Y en cuanto al gestor yo quisiera hacer las descargas desde la app.

Gracias
Responder Con Cita
  #5  
Viejo 06/11/12, 21:39:56
Avatar de hecsagis
hecsagis hecsagis no está en línea
Desarrollador
Mensajes: 266
Compra y venta: (1)
 
Fecha de registro: mar 2009
Mensajes: 266
Modelo de smartphone: Nexus 5
Tu operador: Vodafone
Mencionado: 0 comentarios
Tagged: 0 hilos
Un AsyncTask es un hilo que se ejecuta independientemente del hilo principal y de forma paralela, de forma que estás ejecutando un código concreto pero sin bloquear el hilo principal, de forma que puedes seguir usando la app sin esperar a que una actividad bloqueante finalice. En tu caso, el código que se debería ejecutar de forma paralela y que es bloqueante es la descarga de la imagen:

http://developer.android.com/referen...AsyncTask.html
Responder Con Cita
  #6  
Viejo 06/11/12, 23:32:38
Avatar de Celtium
Celtium Celtium no está en línea
Miembro del foro
Mensajes: 432
 
Fecha de registro: may 2010
Mensajes: 432
Modelo de smartphone: Nexus One, 4
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por afranco2000 Ver Mensaje

"desde la version 2.3.3 android tiene un gestor de descargas. va muy bien."
Y en cuanto al gestor yo quisiera hacer las descargas desde la app.
El gestor de descargas no es la app de descargas... en realidad se le dice al gestor que archivo quieres descargar desde la aplicación y el gestor se encarga de todo, lo intenta hasta que lo consigue o da error. Puedes decidir donde guardarlo, como llamar al archivo, etc... todo. El gestor notifica a la app si la descarga es correcta o si esta descargándose, si da error, etc

Viene siendo como los que tienen los navegadores, gestiona las descargas en segundo plano. Hace todo el trabajo el sólito. Por algo lo incluyeron en el Android desde esa versión

No es una chapuza...

El AsyncTask es un hilo especial de Android, se ejecuta en segundo plano. Desde versiones 3 de Android ya no deja hacer en el hilo de la Activity cosas que pueden ralentizar la app. Si pones a descargar en la activivy se te puede bloquear el móvil un rato. Para evitar eso Google decidió que en vez de funcionar la app de un error y rompa.

Para que no pase hazlo en un hilo de ejecución paralelo al hilo principal (el de la activity).

Busca en google AsyncTask, hay mil turoriales. Escapa de hacer otro tipo de hilos, el propio de android es el AsyncTask, es muy completo haces casi todo y es muy facl.

;)
Responder Con Cita
  #7  
Viejo 07/11/12, 10:05:37
Avatar de set92
set92 set92 no está en línea
Miembro del foro
Mensajes: 468
 
Fecha de registro: jun 2012
Mensajes: 468
Modelo de smartphone: samsung
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Todo programa esta compuesto de hilos, incluso cuando piensas que no tienes ninguna tienes un hilo principal, en android a este hilo principal tambien se le llama hilo UI, o hilo de interfaz puesto que es el unico hilo que puede modificar la interfaz, cualquier otro hilo que la intente modificar hara que la app no funcione, y en tu caso si el hilo UI o hilo main tiene que hacer una operacion que dure mas de 5segundos la app se bloqueara y le mostrara al usuario un mensaje de que la aplicacion esta tardando mucho en responder, y si quiere esperar o cerrar la app, a lo que la mayoria de usuarios le dara a cerrar, por lo que normalmente las descargas se hacen en hilos aparte y le pones una progressbar para mostrarle al usuario como va la descarga.

Aqui te dejo algunos tutoriales pero vamos que ahi muchos por ahi, y estos no tienen porque ser los mejores:
Thread: http://www.inforjmr.es/?p=551
AsyncTask: http://www.inforjmr.es/?p=556
Jugando con Threads: http://inchoo.net/mobile-development...droid-threads
Y esta que esta muy bien, 3 formas de trabajar con hilos http://androideity.com/tag/threads

Edit: Lo que te comenta Celtium es que si solo programas para android mires solo el AsyncTask que es el propio de Android y por lo tanto mas eficiente para este, aunque yo estoy haciendo el ciclo de DAM y por lo tanto nos enseñaron hace poco los hilos en java, que son los threads y runnable, y ya en android no nos han llegado a explicar en clase AsyncTask por no tener el suficiente tiempo para todo. Si miras los hilos en java intenta hacerlo por Runnable que parece ser que es mas efectivo puesto que Thread es una clase y Runnable una interfaz y como java no acepta la herencia multiple conviene usar la mayoria de veces el Runnable.

Última edición por set92 Día 07/11/12 a las 10:09:38
Responder Con Cita
  #8  
Viejo 07/11/12, 20:14:11
Avatar de sgsbarna
sgsbarna sgsbarna no está en línea
Usuario muy activo
Mensajes: 605
 
Fecha de registro: nov 2010
Localización: Montmeló
Mensajes: 605
Modelo de smartphone: GT-I9000, GT-I9001, GT-I9300, Tab2 7"
Versión de ROM: JellyBean * JellyBean * Krom/Jrom/Carbon (Siyah Dual Boot)
Tu operador: Vodafone
Mencionado: 5 comentarios
Tagged: 0 hilos
Por si te interesa...

http://loopj.com/android-async-http
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 23:23:43 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007