Ciclo de vida de una actividad Android


   En este video os explico un poco como es el ciclo de vida de una actividad en una aplicación Android. Os puede ayudar a entender mejor como se ejecuta una actividad y cuando entra en un estado u otro.

   Los estados de una actividad son los siguientes:
  • onCreate: es cuando se crea la actividad. En este estado es donde se crean las estructuras de datos, la interfaz, eventos y donde se pueden recibir o enviar datos desde otra actividad. Por eso este es el método obligatorio que tenemos que implementar a la hora de hacer una aplicación.
  • onStart: después de onCreate pasamos a este estado, que indica que la actividad va a ser mostrada, es decir que se va a hacer visible.
  • onRestart: se llama cuando una actividad se paró y se vuelve a llamar de nuevo.
  • onResume: este estado se ejecuta cuando la actividad ya se ha cargado y el usuario ya puede interactuar con ella.
  • onPause: se ejecuta cuando el sistema va a lanzar una segunda actividad, por lo que los recursos van a ir a esta segunda actividad.
  • onStop: en este estado la actividad ya no es visible por el usuario, porque hay otra actividad que es visible.
  • onDestroy: a este estado se llama cuando la actividad es totalmente destruida. Puede ocurrir que por requerimientos de memoria, la actividad se destruya sin llamar a este método. 

    DETALLES A TENER EN CUENTA    

   Cuando se crea una actividad los métodos que se llaman son (en este orden):

onCreate -> onStart -> onResume

   Una actividad está encima de la pila, es visible y tiene foco en estos dos estados:

onResume y onPause

   Los estados en que una actividad no es visible son:

onStart y onStop

  Si llamamos al método finish() cuando una actividad está activa y tiene foco, se ejecuta directamente el método/estado onDestroy sin pasar por onPause u onStop.

   No hace falta implementar todos los métodos de estos estados. Si hay algunos en los que nos viene muy bien ejecutar un tipo de acción u otro. Por ejemplo el método onPause podemos aprovecharlo para guardar datos, parar animaciones o recursos para que no se consuma CPU. Tenemos que tener cuidado porque hasta que no termine este estado, la siguiente actividad no se ejecutará (onResume), por lo que implementemos en este método no tiene que tardar mucho en ejecutarse.

   También podemos usar el método onStart comprobar ciertos aspectos del teléfono como si tiene activo el gps o no.

   En el vídeo podéis ver un ejemplo con una aplicación en la que se ve como se pasa de un estado a otro. Os recomiendo verlo. El proyecto que sale en el vídeo os lo podéis descargar AQUÍ.


JAVA: Conectar con una Base de Datos Access con JDBC

  

   En este tutorial vamos a ver como conectarnos a una base de datos de Microsoft Access mediante el driver JDBC en Java. Yo he utilizado Netbeans, pero se hace igual en Eclipse.

   El driver JDBC/ODBC está obseleto a partir de la versión 8 de java. Tuve muchos problemas al hacer una aplicación que se tenia que conectar con una base de datos antigua hecha en Microsoft Access. Al final lo conseguí con unos drivers hechos en java, en definitiva unas librerias. Se llama UCanAccess y la podéis descargar AQUÍ.

   Tenemos que elegir la opción que pone .bin de la versión más reciente:


   Cuando las descargamos y descomprimimos cogemos todos los .js (uno está en la raíz principal y los otros en la carpeta lib) y los ponemos todos juntos en una carpeta. Simplemente por comodidad a la hora de agregarlos al proyecto. También guardo la carpeta en la ruta donde están mis proyectos para tenerla siempre a mano, porque si luego se cambia de sitio habrá que volverlas a añadir al proyecto porque no encuentra la ruta.



   Ahora nos creamos un proyecto nuevo en Netbeans (File/New Project/Java/Java Application) o en Eclipse (File/New/Java project).

   En Netbeans nos aparece una carpeta Libraries y le damos botón derecho y pinchamos en Add JAR/Folder.


 
   Seleccionamos nuestra carpeta donde nos hemos descargado y copiado las librerías anteriores, marcamos todas y le damos a Abrir.



    En Eclipse es en botón derecho en el proyecto, Properties y las añadimos en esta pantalla:



  Con esto ya tenemos nuestras librerias en el proyecto. Ahora sólo queda crear el código para conectarnos. He realizado un pequeño proyecto donde tengo implementada la clase para la conexión. En el video podéis ver como se hace esa conexión. Os podéis descargar el proyecto en esta DIRECCIÓN.

   Aparecerán tres carpetas, una con las librerías, otra con la BD Access y otra con el proyecto.

   Os dejo una de las clases del proyecto, que es la clase de conexión a la base de datos. El resto como os digo lo podéis ver en el video y en los archivos que he subido.

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.JOptionPane;



/**

 *

 * @author Sandra

 */

public class connectBD {

   

    private Connection conexion;

    private Statement sentencia;

   

    private final String controlador;

    private final String nombre_bd;

    private final String usuarioBD;

    private final String passwordBD;

   

   

    public connectBD(){

        this.controlador="sun.jdbc.odbc.JdbcOdbcDriver";

        this.nombre_bd="C:\\Users\\Sandra\\Documents\\NetBeansProjects\\BD_Access\\Prueba_Java.accdb";

        this.usuarioBD="";

        this.passwordBD="";

       

    }

   

    public boolean EstablecerConexion() throws SQLException{

       

      

        try{

            conexion=DriverManager.getConnection("jdbc:ucanaccess://"+this.nombre_bd,this.usuarioBD,this.passwordBD);

        }catch (SQLException e){

             JOptionPane.showMessageDialog(null,"Error al realizar la conexion "+e);

             return false;

        }

       

        try {

            this.sentencia=this.conexion.createStatement(

            ResultSet.TYPE_SCROLL_INSENSITIVE,

                    ResultSet.CONCUR_READ_ONLY);

        }

        catch (SQLException e) {

            JOptionPane.showMessageDialog(null,"Error al crear el objeto sentencia "+e);

            return false;

        }

       

        return true;

       

    }

   

    public ResultSet EjecutarSentencia( String sql) throws SQLException{

       

        ResultSet rs;

        rs = this.sentencia.executeQuery(sql);

       

       

        return rs;

    }

}

Objetivo macro 1:1 Tamron SP 90mmm F/2.8 para Sony alpha


   Una de las cosas que más me gusta de la fotografía es la fotografía macro. Tenía ya muchas ganas de un objetivo macro para poder fotografiar sobretodo a insectos. Ya sabéis que el mundillo este de la fotografía es bastante caro por lo que para comprarte cualquier cosa tienes soltar un buen pellizco de dinero, sobretodo si eres profesional (en mi caso no, soy aficionada).

   Pues llegó el día del tan deseado objetivo macro. Tenía muchas dudas sobre cual comprarme (en realidad no lo compré yo, sino que fue un regalo de cumpleaños pero premeditado jeje). Estuve viendo los de sony, minolta, tamron. Al final me decidí por el de Tamron porque leí muy buenas críticas y sale más asequible que el 100mm de sony, por lo menos para empezar.


   Cuesta un poco acostumbrarse a enfocar, pero ya le he cogido el truquillo (yo siempre utilizo el enfoque manual). Depende de la distancia a la que enfoques tiene un botón para que lo cambies y así enfoque más rápido. Leí que tarda mucho en enfocar, pero si utilizas bien esta pestaña no tarda tanto, ya digo simplemente hay que cogerle el puntillo a lo del enfoque.

   Os dejo alguna de las fotos que tengo el flicker con mi nuevo objetivo. Espero que os gusten.

Insecto

Libélula

Insecto palo -  Diapherodes gigantea
Pata de gato