Avisos

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

Respuesta
 
Herramientas
  #1  
Viejo 27/06/12, 18:15:09
Array

[xs_avatar]
monchyrcg monchyrcg no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Tu operador: Orange
Error en la lectura de un txt

Buenas tardes, tengo una aplicación que cojo un txt de la sd y lo leo todo funcionaba bien pero ahora me da un error. En realidad no es un error la aplicación cuando arranca se queda con la pantalla en negro así todo el tiempo, en el logcat no me aparece error solo una linea que pone:

Código:
06-27 17:40:57.527: I/dalvikvm(3610): Wrote stack traces to '/data/anr/traces.txt'
En el traces.txt aparece esto:
Código:
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)
"main" prio=5 tid=1 SUSPENDED
  | group="main" sCount=1 dsCount=0 obj=0x400245c8 self=0xcfb8
  | sysTid=3610 nice=0 sched=0/0 cgrp=default handle=-1345006464
  at java.io.FileInputStream.read(FileInputStream.java:~290)
  at java.io.FileInputStream.read(FileInputStream.java:245)
  at com.zonasVuelo.Monchy.ZonasVueloActivity.leer(ZonasVueloActivity.java:126)
  at com.zonasVuelo.Monchy.ZonasVueloActivity.leerPuntosPropios(ZonasVueloActivity.java:198)
  at com.zonasVuelo.Monchy.ZonasVueloActivity.onCreate(ZonasVueloActivity.java:116)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1674)
  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:942)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:130)
  at android.app.ActivityThread.main(ActivityThread.java:3694)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:507)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  at dalvik.system.NativeStart.main(Native Method)
Doy por hecho que la maquina virtual de java tiene problemas a la hora de leer el txt pero no se porque, el archivo traces.txt si lo leéis me da error en una línea 126 en esa línea esta el siguiente código.

Código:
while(fileIN.read(reader)!= -1){ }
Este código esta en un método que también lo pongo

Código:
private String leer(){
		String todo = null;
		if(sitios.exists() && sitios.canRead()){
			FileInputStream fileIN = null;
			try{
			   	fileIN = new FileInputStream(sitios);
		    	byte [] reader = new byte[fileIN.available()];
		    	while(fileIN.read(reader)!= -1){ }
		    	todo = new String(reader);
		    }catch(Exception ex){
				ex.printStackTrace();
			}finally{
				if(fileIN != null){
					try{
						fileIN.close();
					}catch(IOException ioExcep){
						ioExcep.printStackTrace();
					}
				}
			}
		}
		return todo;
	}
Muchas gracias, un saludo.
Responder Con Cita


  #2  
Viejo 28/06/12, 16:47:12
Array

[xs_avatar]
monchyrcg monchyrcg no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Tu operador: Orange
Veo que la gente lo lee, pero nadie dice nada.
Responder Con Cita
  #3  
Viejo 28/06/12, 17:18:30
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Android se molesta un poco (mucho) si intentas leer streams desde el hilo de ejecución principal, y más si lo haces en el onCreate que tiene que ser un método muy ligero y salir cuanto antes.

Los ANR (Application Not Responding) suelen ser por eso, por tener el hilo principal (UI Thread) ocupado mucho tiempo.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #4  
Viejo 29/06/12, 10:09:46
Array

[xs_avatar]
kamarilla kamarilla no está en línea
Miembro del foro
 
Fecha de registro: abr 2011
Localización: Bilbao
Mensajes: 347
Modelo de smartphone: Xperia Neo
Tu operador: Orange
 Cita: Originalmente Escrito por monchyrcg Ver Mensaje
Buenas tardes, tengo una aplicación que cojo un txt de la sd y lo leo todo funcionaba bien pero ahora me da un error. En realidad no es un error la aplicación cuando arranca se queda con la pantalla en negro así todo el tiempo, en el logcat no me aparece error solo una linea que pone:

Código:
06-27 17:40:57.527: I/dalvikvm(3610): Wrote stack traces to '/data/anr/traces.txt'
En el traces.txt aparece esto:
Código:
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)
"main" prio=5 tid=1 SUSPENDED
  | group="main" sCount=1 dsCount=0 obj=0x400245c8 self=0xcfb8
  | sysTid=3610 nice=0 sched=0/0 cgrp=default handle=-1345006464
  at java.io.FileInputStream.read(FileInputStream.java:~290)
  at java.io.FileInputStream.read(FileInputStream.java:245)
  at com.zonasVuelo.Monchy.ZonasVueloActivity.leer(ZonasVueloActivity.java:126)
  at com.zonasVuelo.Monchy.ZonasVueloActivity.leerPuntosPropios(ZonasVueloActivity.java:198)
  at com.zonasVuelo.Monchy.ZonasVueloActivity.onCreate(ZonasVueloActivity.java:116)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1674)
  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:942)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:130)
  at android.app.ActivityThread.main(ActivityThread.java:3694)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:507)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  at dalvik.system.NativeStart.main(Native Method)
Doy por hecho que la maquina virtual de java tiene problemas a la hora de leer el txt pero no se porque, el archivo traces.txt si lo leéis me da error en una línea 126 en esa línea esta el siguiente código.

Código:
while(fileIN.read(reader)!= -1){ }
Este código esta en un método que también lo pongo

Código:
private String leer(){
		String todo = null;
		if(sitios.exists() && sitios.canRead()){
			FileInputStream fileIN = null;
			try{
			   	fileIN = new FileInputStream(sitios);
		    	byte [] reader = new byte[fileIN.available()];
		    	while(fileIN.read(reader)!= -1){ }
		    	todo = new String(reader);
		    }catch(Exception ex){
				ex.printStackTrace();
			}finally{
				if(fileIN != null){
					try{
						fileIN.close();
					}catch(IOException ioExcep){
						ioExcep.printStackTrace();
					}
				}
			}
		}
		return todo;
	}
Muchas gracias, un saludo.


Buenas:

Lo primero, comentarte que si explicarías lo que intentas hacer con el fichero, seria algo mas facial ayudarte, o si el código estaría comentado.
Aun asi, por lo que deduzco, tu intención es leer el fichero "traces.txt" y volcarlo en un String "todo" con el cual luego haras lo que sea.... ¿Me equivoco?

Por otro lado, no se si es la manera mas efectiva de leer de un fichero de texto de la SD, ya que coges un fichero de texto, que ya sabes que esta compuesto por strings, pero tu lo lees como byte y lo conviertes a string de nuevo. Con esto no te quiero decir que este mal, pero haces trabajar mas al proceso, sobretodo si el fichero es grande.

Mi consejo y la manera que uso yo en mis programas para leer los fichero que tengo en la SD... es la siguiente (No se si es la mejor, pero funciona perfectamente y rápido):

He modificado mi código para sea lo que intentas hacer mas o menos.

Código:
private String leer(){
String todo = "";
 	    	try{
                   \\ACCEDEMOS AL FICHERO QUE SE ENCUENTRA EN AL SD

 		   File f = new File(Environment.getExternalStorageDirectory()+"/RUTA_DE_FICHERO/"+"/traces.txt");
 		   
                    FileInputStream fileIS = new FileInputStream(f);
 		   
                   BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS));
 		 
 		   String readString = new String();
 		 
 		   //Leemos cada linea del fichero y la almacenamos en la variable todo

 		   while((readString = buf.readLine())!= null){
 			  
 			  todo=todo+(readString);
 		     
 		 
 		   }

                  \\CERRAMOS EL ACCESO AL FICHERO

 		   buf.close();
 		} catch (FileNotFoundException e) {

 		  \\ CÓDIGO A REALIZAR SI EL FICHERO NO SE ENCUENTRA

 		   e.printStackTrace();
 		 
 		} catch (IOException e){
 		 
                    \\ CÓDIGO A REALIZAR SI POR LO QUE SEA HAY UN FALLO DE LECTURA\ESCRITURA

 		   e.printStackTrace();}
	   return todo;
 }

Espero que te halla sido de ayuda, si tienes alguna duda mas y puedo ayudarte, no dudes en preguntar ;)
__________________
Google+\Mail: [email protected]
Twitter: @Gantzapps
Facebook: facebook.com/gantzapps.apps
Blog: http://gantz-apps.blogspot.com/

Última edición por kamarilla Día 29/06/12 a las 10:12:30.
Responder Con Cita
  #5  
Viejo 29/06/12, 12:56:34
Array

[xs_avatar]
monchyrcg monchyrcg no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Tu operador: Orange
Gracias por el consejo de cambiar el modo de lectura, lo tendré en cuenta y lo cambiare.

No quiero leer el traces.txt quiero leer otro archivo de texto que esta en la SD. El fichero contiene por cada linea una latitud, longitud, nombre separados por comas, cojo esto y luego lo pinto en el mapa. Algo bastante fácil y sencillo y todo me iba hasta que de repente nada la aplicación en negro.

No me se ningún ANR se queda en negro y en el logCat pone lo que puse en el primer log, yo creo que se peta la maquina virtual de Android y me escribe el error en el fichero de texto traces.txt. Voy a probar ahora mismo en otro movil y con lo que tu me dices y os cuento.
Responder Con Cita
  #6  
Viejo 29/06/12, 13:15:10
Array

[xs_avatar]
kamarilla kamarilla no está en línea
Miembro del foro
 
Fecha de registro: abr 2011
Localización: Bilbao
Mensajes: 347
Modelo de smartphone: Xperia Neo
Tu operador: Orange
 Cita: Originalmente Escrito por monchyrcg Ver Mensaje
Gracias por el consejo de cambiar el modo de lectura, lo tendré en cuenta y lo cambiare.

No quiero leer el traces.txt quiero leer otro archivo de texto que esta en la SD. El fichero contiene por cada linea una latitud, longitud, nombre separados por comas, cojo esto y luego lo pinto en el mapa. Algo bastante fácil y sencillo y todo me iba hasta que de repente nada la aplicación en negro.

No me se ningún ANR se queda en negro y en el logCat pone lo que puse en el primer log, yo creo que se peta la maquina virtual de Android y me escribe el error en el fichero de texto traces.txt. Voy a probar ahora mismo en otro movil y con lo que tu me dices y os cuento.
Ok. Espero que te sirva.

Yo por norma general, desarrollo contra el simulador de android, aunque siempre me gusta hacer pruebas contra mi dispositivo, ya que no se compartan del todo igual.

Suerte, y ya nos contaras.
__________________
Google+\Mail: [email protected]
Twitter: @Gantzapps
Facebook: facebook.com/gantzapps.apps
Blog: http://gantz-apps.blogspot.com/
Responder Con Cita
  #7  
Viejo 29/06/12, 13:26:16
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

 Cita: Originalmente Escrito por monchyrcg Ver Mensaje
No me se ningún ANR se queda en negro y en el logCat pone lo que puse en el primer log
La pantalla se queda en negro porque bloqueas el hilo principal que es el que pinta, hasta que no salga del onCreate no tiene nada que pintar. Y concretamente, de la línea que pusiste no pasa porque se queda bloqueado ahí y Android suspende el hilo.

¿Esto de las coordenadas no lo habías hecho ya hace tiempo? ¡Ánimo!
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Respuesta

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



Hora actual: 05:09:41 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /