Ciclo de vida
Una actividad es cuando nosotros solamente tenemos una pantalla que el usuario ve en un dispositivo al mismo tiempo, normalmente, una aplicación tiene múltiples actividades, y el usuario va intercambiando entre estas, por lo que podemos decir que las actividades son la parte más visible de una aplicación en Android.
Esto es muy frecuente ver por ejemplo en páginas web en donde tenemos varias páginas, por ejemplo la página inicio que liga a otras páginas, en esta analogia podemos ver que es similar a Android, en donde tenemos Actividas principales que se ligan a otras para al final hacer una aplicación, por ejemplo si nosotros nos vamos a contactos y elegimos a un amigo de contactos, lo podemos seleccionar y poder mandar un SMS, lo cual liga a otra actividad.
En el punto de vista de nuestro campo, podemos decir que una Actividad es iniciar con la creación de un nuevo proceso de Linux, la asignación de memoria para los objetos de la interfaz de usuario, poniendo los objetos de diseño que hemos declarado en el XML, para crear la pantalla, por lo que este trabajo es simplemente el incio para poner a trabajr una actividad, vigilado por medio de un administrador de actividads.
El adminsitrador de actividades del sistema, es el responsable de crear, destruir y hacer gestión a las actividades, por lo que por ejemplo, cuando el usuario inicia por primera vez una aplicación, el gestor de actividades creará su actividad y lo pondrá en la pantalla, para luego más tarde, que el usuario cambie de pantalla, el gestor de actividades moverá la actividad para ponerlo en un lugar de espera en el sistema, de esta manera, si el usuario desea volver a una actividad, se puede iniciar con mayor rapidez, por lo que al tener muchas actividades que ya no se han utilizado por cierto tiempo, hace que este administrador destruya para liberar espacio para las que están actualmente disponibles, por lo que podemos ver que Android esta mecanisado para ayudar a mejorar la velocidad de la interfaz de usuario y así mejorar la experiencia de este.
La programación para Android de manera conceptual, diferente a la programación de otros ambientes, por ejmplo en iOS, yo en lo particular, he manejado un poco los dos diferentes sistemas, mientras Android utiliza este tipo de ambiente, iOS maneja un diseño MVC, del cual hablaré en otra entrada, en Android, por el contrario estamos respondiendo a ciertos cambios de estado en la aplicación que estemos realizando, por lo que se basa en la aplicación como applets o servlets, en donde se trata de un ciclo de actividad, no de en qué estado se encuentra esta actividad, por lo que tenemos maneras diferentes de crear aplicaciones para Android.
Este es un ejemplo de un ciclo de vida de una actividad:
Iniciando el estado. [Starting...]
Cuando en una actividad no está en la memoria, entonces es que esta en un estado de partida, esto quiere decir que si bien, está esperando a ser puesta en marcha, la actividad pasará por un conjunto de métodos, por lo que nosotros como programadores debemos de llenar para que esta actividad realice su estado de ejecución.
Hay que tener en cuenta que la transisción de un estado al otro a partir de una ejecución es una operación costora en términos de computación, por lo que esto afecta directamente con la vida de batería del dispositivo Android, esta es la razón por lo que no se destruyen automaticamente las aplicaciones cuando ya no se muestan, ya que si el usuario desea volver a utilizarla, esta ya esta en estado de esperando.
Estado de ejecución [Running...]
Cuando en una actividad, tenemos desplegado en la pantalla la aplicación en conjunto con su interacción de usuario, podemos decir que este es el estado de ejecución el cual podemos decir que todas las interacciones propuestas, como escribir, tocar un botón, ya se encuentran disponibles y están a cargo de la actividad.
La actividad de ejecución es el que tiene prioridad en la administración de actividades, por lo que debe poder conseguir más memoria y recursos que necesita para que esta funcione rápidamente, asegurandose que el sistema operativo está haciendo todo lo posible para que la aplicación sea lo más fluida posible.
Pausado
Esto es cuando una activad no esta en el enfoque del usuario, que no interactua con ella, pero es visible en la pantalla, podemos decir que está en un estado de pausa, en donde podemos decir que muchas veces este estado no llega a concretarse en una aplicación ya que si tenemos un dispositivo, regularmente se está utilizando o simplemente no, pero en algunas aplicaciones muy especificas, como en el caso de los videojuegos, podemos ver cuadros de texto que dicen que la actividad está en pausa, y que algunas veces esta a un paso de pasar al estado de ser detenido completamente.
Es importante recalcar que en este estado, aún tienen todavia alta prioridad los términos de conseguir memoria y otros recursos, como en el estado anterior, esto es porque todavia son visibles para el usuario y no se quita de la pantalla.
Detenido [Stopped...]
Cuando una actividad ya no está visible, pero aún está en la memoria, se dice que este es un estado de detención, en donde la actividad detenida podría volver a estar enfrente para convertirse en una actividad principal por el administrador de actividades, o podría ser destruido y eliminado de la memoria.
El sistema realiza esto ya que las actividades en un estado de detención puede ser probablemente que el usuario quiera verla otra ves, dentro de poco tiempo, por lo que reanudar una aplicación tendria un impacto más barato que iniciar toda la actividad a partir de cero, porque ya tenemos todos los datos y objetos que se cargan en memoria y simplemente tienen que traer todo hasta el primer plano.
Destruido [Destroyed...]
Una actividad destruida, es cuando ya no está en la memoria, entonces el administrador de actividades de android ha decidido que la actividad ya no es necesaria que esté en memoria y la ha eliminado, por lo que antes de destruir esa actividad, se pueden realizar ciertas acciones como por ejemplo, guardar cualquier información importante que no se habia guardado antes, sin embargo, no hay una garantia de que la actividad se detuvo antes de ser destruido, por lo que es mejor programar que se guarden las cosas importantes en el estado de pausa, en lugar del esta detenido.
Es importante aclarar que el hecho de que una actividad este en un estado de ejecución no quiere decir que está realizando mucho procesamiento, por lo que de la misma manera, una actividad que está en estado de detención no es necesariamente que no está haciendo nada, entonces podemos concluir que los nombres de estado, se refieren precisamente a la forma activa de la actividad respecto a la entrada de usuario.
Referencias.
Android Programming: O' Reilly
Desarrollo en Android
miércoles, 16 de mayo de 2012
miércoles, 9 de mayo de 2012
Tipos de pantallas táctiles
No todas las pantallas táctiles son iguales, nosotros como programadores, debemos de saber las diferencias y limitaciones que puedan tener las pantallas táctiles, si bien, todos los nuevos smartphones tienen una pantalla táctil, existen dos tipos principales que se utilizan en estos aparatos, las pantallas táctiles capacitivas y las resistivas, en esta entrada hablaré de cada uno de ellos.
Las pantallas táctiles capacitivas.
Este tipo de pantallas registran un contacto cada vez cada vez que entra en contacto con un conductor a objetos, por ejemplo los dedos humanos, entonces podemos decir que las pantallas táctiles capacitivas son muy sensibles, ya que no se requere ninguna presion para registrar un toque, inclusive el contacto más leve se activará en la pantalla, estas utilizan el vidrio como panel frontal, por lo que los hace altamente resistente, de fácil limpieza y resistente a arañazos.
Las pantallas táctiles capacitivas tambien pueden utilizarse con gestos multi-touch, por lo que en general, podemos conciderarlos como rápidas, pero, dada la sensibilidad de la pantalla táctil, podemos tener dificultad, por ejemplo al escribir, aquí el tamaño del teclado y la cantidad de espacio entre teclas tienen un aspecto importante en la pantalla, por lo que debemos tener en cuenta eso.
Las desventajas de la pantalla táctil capacitivo es con la precisión, la mayoría de las pantallas táctiles capacitivas no responden a los objetos que no sean los dedos humanos "desnudos", y por lo tanto no funcionan con lapices ópticos, o con la uña, esto es debido a que los dedos son mucho más ancho que un lápiz, haciendo que la escritura y otras acciones sean dificiles.
Algunos dispositivos con pantallas táctiles capacitivas son el iPhone, iPad y HTC HD2.
Las pantallas táctiles resistivas.
Las pantallas resistivas son construidas a partir de dos capas de material con un espacio entre ellos, entonces cuando se pulsa en la pantalla externa, las dos capas se prensan en contacto, registrando así un toque debido a que el sistema funciona según la presión, entonces se puede usar objetos como un lápiz o una uña, esto hace que las pantallas táctiles resistivas sean utiles para la escritura y otras funciones de alta precisión, las pantallas táctiles resistivas tambien son preferibles en climas más frios, donde los usuariso pueden usar guantes en sus teléfonos inteligentes y tabletas, al igual que son considerablemente menos costosos que las pantallas capacitivas.
Los inconvenietes es que muchas veces las pantallas táctiles resistivas no pueden soportar gestos mult-touch, tiene una poca visibilidad con la luz solar directa y su durabilidad es menor, por lo que la capa superior en una pantalla resistiva está hecho de un material blando y flexible que puede ser dañado mucho más facil que el vidrio y es necesario calibrarla cada cierto tiempo.
Algunos dispositivos con pantallas táctiles resistivas son muchos telefonos de Nokia, Samsung, etc.
¿Cual es mejor?
Es difícil decir si una u otra es mejor ya que la tecnología de pantalla táctil capacitiva es más reciente, por lo que es más cara, mientras que muchas empresas utilizan las características de gestos multi-touch y pantalla de cristal para ser considerados como tablets o smartphones de gama alta, con el uso de pantallas táctiles capacitivas, pero si se prefiere trabajar con un lápiz o usar guantes, una pantalla táctil capasitiva lo puede hacer proporcionando otros beneficios.
Voy a hacer una lista sobre los pro y las contras entre ellas.
Pantalla táctil capacitiva.
Pros:
Contras:
Pantalla táctil resistiva.
Pros:
Contras:
Así que no podemos decir que una es mejor que otra, simplemente podemos concluir con que cada una tiene características que son importantes y que nosotros podemos seleccionar la que nosotros consideramos que es mejor, pero es importante saber que tipo de pantallas vamos a utilizar para nuestro proyecto y si cual es más viable para hacerlo.
Las pantallas táctiles capacitivas.
Este tipo de pantallas registran un contacto cada vez cada vez que entra en contacto con un conductor a objetos, por ejemplo los dedos humanos, entonces podemos decir que las pantallas táctiles capacitivas son muy sensibles, ya que no se requere ninguna presion para registrar un toque, inclusive el contacto más leve se activará en la pantalla, estas utilizan el vidrio como panel frontal, por lo que los hace altamente resistente, de fácil limpieza y resistente a arañazos.
Las pantallas táctiles capacitivas tambien pueden utilizarse con gestos multi-touch, por lo que en general, podemos conciderarlos como rápidas, pero, dada la sensibilidad de la pantalla táctil, podemos tener dificultad, por ejemplo al escribir, aquí el tamaño del teclado y la cantidad de espacio entre teclas tienen un aspecto importante en la pantalla, por lo que debemos tener en cuenta eso.
Las desventajas de la pantalla táctil capacitivo es con la precisión, la mayoría de las pantallas táctiles capacitivas no responden a los objetos que no sean los dedos humanos "desnudos", y por lo tanto no funcionan con lapices ópticos, o con la uña, esto es debido a que los dedos son mucho más ancho que un lápiz, haciendo que la escritura y otras acciones sean dificiles.
Algunos dispositivos con pantallas táctiles capacitivas son el iPhone, iPad y HTC HD2.
Las pantallas táctiles resistivas.
Las pantallas resistivas son construidas a partir de dos capas de material con un espacio entre ellos, entonces cuando se pulsa en la pantalla externa, las dos capas se prensan en contacto, registrando así un toque debido a que el sistema funciona según la presión, entonces se puede usar objetos como un lápiz o una uña, esto hace que las pantallas táctiles resistivas sean utiles para la escritura y otras funciones de alta precisión, las pantallas táctiles resistivas tambien son preferibles en climas más frios, donde los usuariso pueden usar guantes en sus teléfonos inteligentes y tabletas, al igual que son considerablemente menos costosos que las pantallas capacitivas.
Los inconvenietes es que muchas veces las pantallas táctiles resistivas no pueden soportar gestos mult-touch, tiene una poca visibilidad con la luz solar directa y su durabilidad es menor, por lo que la capa superior en una pantalla resistiva está hecho de un material blando y flexible que puede ser dañado mucho más facil que el vidrio y es necesario calibrarla cada cierto tiempo.
Algunos dispositivos con pantallas táctiles resistivas son muchos telefonos de Nokia, Samsung, etc.
¿Cual es mejor?
Es difícil decir si una u otra es mejor ya que la tecnología de pantalla táctil capacitiva es más reciente, por lo que es más cara, mientras que muchas empresas utilizan las características de gestos multi-touch y pantalla de cristal para ser considerados como tablets o smartphones de gama alta, con el uso de pantallas táctiles capacitivas, pero si se prefiere trabajar con un lápiz o usar guantes, una pantalla táctil capasitiva lo puede hacer proporcionando otros beneficios.
Voy a hacer una lista sobre los pro y las contras entre ellas.
Pantalla táctil capacitiva.
Pros:
- Soporte multi-touch
- Visibilidad incluso con luz del sol
- Sensible al toque de dedo
- Brillante
- No es propenso al polvo
Contras:
- Contar con humedad (al menos 5%)
- Más caro
- No funciona con objetos o uñas.
Pantalla táctil resistiva.
Pros:
- Baratas
- Funciona con cualquier objeto
- Funciona con cualquier nivel de humedad
- Facilidad de uso
- Muy útil para reconocimiento de escritura
- Más precisa
Contras:
- Da soporte a multitouch, pero no del todo como capacitivas
- Es de alta sensibilidad
- Mala visibulidad con el sol
- La pantalla es mas vulnerable.
Así que no podemos decir que una es mejor que otra, simplemente podemos concluir con que cada una tiene características que son importantes y que nosotros podemos seleccionar la que nosotros consideramos que es mejor, pero es importante saber que tipo de pantallas vamos a utilizar para nuestro proyecto y si cual es más viable para hacerlo.
Probar APPs en diferentes versiones de Android
Para poder realizar aplicaciones compatibles con diferentes versiones de Android, podemos mediante eclipse poder verificarlas de manera virtual y checar su funcionamiento, para eso, en esta entrada explicaré como lo pueden hacer.
Cuando tengas algún proyecto en eclipse, lo que vas a hacer es ingresar a este botón, el cual es el manager del los emuladores virtuales de Android.
Versiones disponibles de android, aquí podemos encontrar las que existen en el mercado y poder verificar nuestra app.
Si nuestra app necesita requerimientos específicos podemos activarlos aquí, en el apartado de Hardware, en donde en mi caso, es importante activar el grabador de voz.
Aquí podemos ver dos emuladores con diferentes versiones.
Cuando tengas algún proyecto en eclipse, lo que vas a hacer es ingresar a este botón, el cual es el manager del los emuladores virtuales de Android.
Entonces te abrirá una ventana, en donde puedes dar clic a nuevo y poder agregar las caracteristicas que deseas del emulador, entre ellas las versiones de android, el CPU, cuanta memoria de SD deseas, la resolución de pantalla y algunas propiedades como grabador de audio, ram, cache, etc.
Versiones disponibles de android, aquí podemos encontrar las que existen en el mercado y poder verificar nuestra app.
Si nuestra app necesita requerimientos específicos podemos activarlos aquí, en el apartado de Hardware, en donde en mi caso, es importante activar el grabador de voz.
Aquí podemos ver dos emuladores con diferentes versiones.
Seguridad en dispositivos móviles
Los smartphones, tablets, reproductores musicales entre otros dispositivos, actualmente son muy utilizados por las personas, ya que son mas fáciles de usar y los puedes traer contigo sin que tengas que andar cargando una computadora, pero al igual que una computadora ya sea de escritorio o laptop, también tienen riesgos sobre los datos personales, utilizamos los dispositivos para meternos a nuestras cuentas de correo o comprar aplicaciones y esta información puede estar vulnerable si no tenemos seguridad en el sistema operativo, por lo que en esta entrada hablaré acerca de la seguridad en los dispositivos móviles.
¿Existen riesgos en el cómputo móvil?
Los dispositivos móviles pueden almacenar mucha información, son portátiles y muchas veces no se tiene la protección adecauada ya que pues como son portables, se pueden perder o robar y si no se toman precauciones, una persona no autorizada puede tener acceso a esta información almacenada en ellos.
Actualmente los dispositivos móviles son un punto clave para las personas que deseean hacer acceso indebido a nuestras cuentas ya que damos acceso a servicios que se almacenan en este dispositivo, por lo que es importante pimero como nosotros debemos de advertir al usuario estos riesgos, por ejemplo.
¿Cómo podemos hacer aplicaciones seguras?
Podemos en listar algunas sugerencias de qué podemos hacer nosotros como programadores para que la aplicación que estemos desarrrollando tenga una buena gestión de seguridad y que no tengamos problemas con malware o personas que quieran vulnerar datos.
Cifrar los datos en todos los niveles.
Es importante que no nos devemos de confiar en solamente la seguridad que nos ofrece el sistema operativo, para reforsarla, es importante cifrar todos los datos importantes, accesos a bases de datos, sistemas de archivos de nuestra aplicación.
Utilizar encriptación "fuerte".
Todos los datos deben ser encriptados con encriptaciones fuertes, asegurando que si se trasmiten a un servidor repoto, o entre dispositivos, tenga encriptación de extremo a extremo.
Aislar la información corporativa.
Toda información de alguna aplicación utilizada en una empresa accediendo de un dispositivo movil, debe de estar completamente aislado de los datos personales de un usuario, creando como capas de protección según los datos que se necesitan utilizar, de manera que los usuarios solamente puedan ver lo que necesesiten para trabajar y no información indebida.
Cumplir com politicas de seguridad.
Nosotros como desarrolladores debemos de asegurarnos de que las políticas de seguridad que tenga la empresa funcionen en esta aplicación, por ejemplo el obligar a que introduscan contraseñas seguras o permitir borrar a distancia datos de la aplicación después de intentar de introducir contraseñas fallidas, etc.
Garantizar que puedan accesar a la red de una forma segura.
Las empresas deben de reducir al minimo la necesitad de abrir puertos de entrada en la red, una solución para aplicaciones móviles seria hacer paquetes cifrados, autentificaciones de solicitudes y conceder accesos a unicamente servidores específicos.
Asegurar plataformas.
Controles estrictos para asegurar plataformas por ejemplo, detección de telefonos con jailbreak, desbloqueados y prevención de acceso a otros servicios, si es necesario.
Referencias.
Key Consideration.
Guidelines for Securing Mobile Computing Devices - Stanford
¿Existen riesgos en el cómputo móvil?
Los dispositivos móviles pueden almacenar mucha información, son portátiles y muchas veces no se tiene la protección adecauada ya que pues como son portables, se pueden perder o robar y si no se toman precauciones, una persona no autorizada puede tener acceso a esta información almacenada en ellos.
Actualmente los dispositivos móviles son un punto clave para las personas que deseean hacer acceso indebido a nuestras cuentas ya que damos acceso a servicios que se almacenan en este dispositivo, por lo que es importante pimero como nosotros debemos de advertir al usuario estos riesgos, por ejemplo.
- Establecer una contraseña para acceder y utilizar el dispositivo, esto ayuda para que personas no autorizadas no puedan tener datos.
- Establecer un tiempo de bloqueo, si no estamos utilizando el dispositivo, ya que ayuda a que cuando no lo estemos usando, personas no puedan tener acceso a esto.
- Mantener todo el software actualizado, incluyendo el sistema operativo que estes utilizando y las aplicaciones que tengas instaladas.
- Es importante no tener sistemas como el jailbreak o flashear el dispositivo, ya que elimina la protección de fábrica del sistema.
- Poner el dispositivo en sistemas que ofrecen seguridad, por ejemplo, Find My iPhone el cual ubica el dispositivo si se roba o pierde.
¿Cómo podemos hacer aplicaciones seguras?
Podemos en listar algunas sugerencias de qué podemos hacer nosotros como programadores para que la aplicación que estemos desarrrollando tenga una buena gestión de seguridad y que no tengamos problemas con malware o personas que quieran vulnerar datos.
Cifrar los datos en todos los niveles.
Es importante que no nos devemos de confiar en solamente la seguridad que nos ofrece el sistema operativo, para reforsarla, es importante cifrar todos los datos importantes, accesos a bases de datos, sistemas de archivos de nuestra aplicación.
Utilizar encriptación "fuerte".
Todos los datos deben ser encriptados con encriptaciones fuertes, asegurando que si se trasmiten a un servidor repoto, o entre dispositivos, tenga encriptación de extremo a extremo.
Aislar la información corporativa.
Toda información de alguna aplicación utilizada en una empresa accediendo de un dispositivo movil, debe de estar completamente aislado de los datos personales de un usuario, creando como capas de protección según los datos que se necesitan utilizar, de manera que los usuarios solamente puedan ver lo que necesesiten para trabajar y no información indebida.
Cumplir com politicas de seguridad.
Nosotros como desarrolladores debemos de asegurarnos de que las políticas de seguridad que tenga la empresa funcionen en esta aplicación, por ejemplo el obligar a que introduscan contraseñas seguras o permitir borrar a distancia datos de la aplicación después de intentar de introducir contraseñas fallidas, etc.
Garantizar que puedan accesar a la red de una forma segura.
Las empresas deben de reducir al minimo la necesitad de abrir puertos de entrada en la red, una solución para aplicaciones móviles seria hacer paquetes cifrados, autentificaciones de solicitudes y conceder accesos a unicamente servidores específicos.
Asegurar plataformas.
Controles estrictos para asegurar plataformas por ejemplo, detección de telefonos con jailbreak, desbloqueados y prevención de acceso a otros servicios, si es necesario.
Referencias.
Key Consideration.
Guidelines for Securing Mobile Computing Devices - Stanford
Suscribirse a:
Entradas (Atom)











