LectorRss:actualización 1.5.3

El domingo me llegó un mensaje de error a través de la consola de desarrolladores de android. El error me informaba de que se producía una NullPointerException en la pantalla donde se muestran las entradas de un canal y recordando un poco algunos problemas a la hora de desarrollar la 1.5.0 supuse que era por que se había acabado la memoria del móvil.

La cosa era la siguiente, si pasabas a mirar la entrada con el navegador que eligieses, y saliendo del programa, llegaba un punto, a veces y dependiendo de si seguías varios enlaces, en que en el emulador me saltaba esto mismo al querer volver a LectorRss con el botón volver del teléfono. Peeero en el móvil no me ocurría, así que pensé que era cosa de limitaciones del emulador….Iba a asegurar que no me volverá a pasar, pero no estoy tan seguro.
Bueno, el caso es que me puse manos a la obra y miré un poco de que iba el tema y la solución estaba en una parte del sistema que había dejado para más adelante, tampoco os voy a decir la cantidad de veces que me ha pasado algo así en este campo y en otros que no tienen nada que ver.
Al tema, la solución viene dada por el método onSaveInstateState(Bunle outState) que se viene a utilizar más o menos así:

protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		// Y aquí lo que quieres guardar, cosas sencillas:int, String, boolean, char.. para
        // objetos es mejor onRetainNonConfigurationInstance, aunque yo no lo he usado.
        // Lo guardas en outState si has llamado así el parámetro del método.
	}//Fin onSaveInstanceState()

Si sucede que Android necesita matar tu activity entra en acción este método y luego en el onCreate con algo como esto:

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	    
	    cambiar = false;
	    if(savedInstanceState != null){
	    	//Recuperas lo que habías guardado en el onSaveInstanceState sacándolo de savedInstanceState, si has llamado así el parámetro del método.
	    	bundle = new Bundle(); //Esto es porque uso bundle a lo largo del programa y lo necesito.
	    	reconstruyendo = true; //Uso esta variable de control para hacer unas cosas u otras dependiendo si es la primera vez o nos la ha matado android.
	    }else{
			bundle = getIntent().getExtras();		
			posicion = bundle.getInt("posicion");
			fuente = posicion;
			accion = bundle.getString("accion");
			urlFuente = bundle.getString("urlrss");
			bundle.clear();
			saliendo = false;
			reconstruyendo = false;
	    }
	    obtenerReferencias();

	}//Fin onCreate(Bundle savedInstanceState);

He necesitado esas variables de control (saliendo y reconstruyendo) supongo que porque no diseñé el programa teniendo en cuenta estas cosas, pero funciona bastante bien. Si no me decís lo contrario.

Además tiene algún cambio más, en las opciones para autoactualizar o enlazar con el canal de nuevas entradas se usa ahora un checkbox en vez del Si/No utilizado hasta ahora, y algunos cambios en el código que cuando estén terminados me deberían permitir corregir posibles errores más fácilmente y también facilitar el incluir posibles mejoras. Ya veremos si es verdad.

Una pequeña actualización más. LectorRss no actualiza por si mismo los canales si estás usando el programa, sin embargo al usar el navegador que tengas en el móvil, al hacer la pulsación larga en el título, te sales de LectorRss y, por lo tanto, puede volver a actoactualizar los canales que hayas designado para ello, con lo que al volver el indice de las noticias cambia y no muestras la entrada adecuada, ni pone como no leída. Ahora funciona bien, ….espero…..

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s