You are on page 1of 6

ng.

Adrin Cataln
Vamos a platicar de cules son las caractersticas generales de "Android" esto, es a
un nivel
de una vista general, es decir vamos a ver cules son los componentes, como intera
ctan
y como arrancamos a usarlos dentro del desarrollo, es importante cuando empezamo
s, consideremos,
que, los mviles, tienen varias caractersticas diferentes, por ejemplo cuando estam
os desarrollando
para web o para algn otro equipo, lo tradicional, entonces cuando trabajamos para
mviles,
hay ciertas cosas, como por ejemplo los recursos, incluyendo el poder de procesa
miento, la memoria,
los diferentes tipos de pantalla, y las resoluciones que se tienen, nos van a pe
rmitir explorar
las diferentes opciones que el "Hardware" tiene, ahora como estamos limitados en
estos
aspectos, tememos que tomar en cuenta a ellos, para cuando desarrollamos, otros
aspectos
importantes, son por ejemplo, la transferencia de datos y la batera, con la trans
ferencia
de datos hay que tomar en cuenta que nuestra "APP" puede ser utilizada en un lug
ar donde
hay una conexin a internet con "LTE" y es muy rpido o en un lugar donde talvez la
persona va estar utilizando "EDGE", la batera es una rea de oportunidad enorme par
a los
fabricantes de telfonos, que creo que en los aos que vienen, vamos a ver bastante
mejora, y en cuanto al espacio por ejemplo, una pregunta que usualmente suelo co
mpartir
en este caso es: si el usuario se qued sin espacio, Qu ira a borrar? sus fotos?,
msica?, etctera o nuestra aplicacin, es altamente probable que borre nuestra aplicac
in,
entonces debemos ser muy cuidadosos de como utilizamos estos recursos, es un ret
o, pero
a la vez, es un reto interesante que nos permite optimizar y buscar la mejor for
ma de solucionar,
Android tiene cierta anatoma que arranca desde el "kernel" de "Linux" esta es la
base,
no tenemos un gestor de ventanas, no tenemos por ejemplo: libreras, estndar que so
porta
"Linux" nicamente toda la parte de administracin, los componentes principales, y e
sto se complementa
con algunas otras cosas desarrolladas especficamente para mviles, luego sobre esta
parte del
"kernel de Linux" vamos a tener libreras y el "RunTime", "RunTime" que sola ser "D
alvik"
y desde hace un par de versiones se modific, ahora es "Dalvik", perdn ahora es "AR
T"
quiere decir "Aged of Time RunTime" y lo que va ser es, compilar todo, antes de
que se
ejecute, esto provoca que cuando estamos actualizando sea mucho ms lento, a veces
talvez han visto
telfonos que tienen "ART" que dice optimizando aplicacin uno de ciento cincuenta,
dos de
ciento cincuenta, etctera, pero al ejecutar es mucho ms rpido, porque esta previame
nte
compilado, a diferencia que "Dalvik" lo compilaba en el momento, otra cosa es qu
e esto va ocupar
ms espacio, sobre este "RunTime" vamos a tener un conjunto de aplicaciones que el
"Framework"
provee, ltimamente mucho de esto se ha centrado se ha centrado sobre "GooglePlay
Services"
y en "GooglePlay Services" lo que ha hecho "Google" es intentar reducir la fragm
entacin,
que estn conscientes que existe, entonces no necesitamos actualizar la versin de "
Android"
por completo, sino nicamente una parte, el componente de "Play Services" y en la
parte
superior de esta anatoma que es como una pirmide vamos a tener las aplicaciones,
all es donde vamos a trabajar nosotros como desarrolladores de "Android" y vamos
hacer
uso de todo lo que esta hacia abajo, por ejemplo cuando utilizo un "Intent" este
"Intent" eventualmente
tiene, como una conexin con la parte ms baja del "kernel de Linux" en donde hace u
so
de la comunicacin entre procesos y eventualmente permite que el usuario, arranque
con una actividad
diferente ya sea de la misma aplicacin o de otra, adicional a esto, quisiera plat
icar
un poco, de cules son los componentes de "Android" principalmente tenemos tres co
mponentes
que son activados con un mismo, activador, valga la redundancia, y de estos comp
onentes
hay uno, en particular que vamos a estar utilizando bastantes, que son las activ
idades(Activity),
entonces las actividades son las pantallas que el usuario ve dentro de la aplica
cin,
una actividad se va mostrar a la vez y nada ms que una, pero la aplicacin puede te
ner
mltiples actividades, imaginemos esto como un "Deck" de cartas, donde tengo mltipl
es
cartas, pero nicamente, una est arriba y una es la que se ve, adems es posible,
que tenga una porcin de mi aplicacin que no requiere de una interfaz grfica que no
se ve, esto se llama un servicio "Service" de forma intuitiva a veces creemos qu
e los
servicios tienen su propio hilo de ejecucin y esto no es as, vale la pena tener en
mente,
que los servicios, no tienen su propio "Thread " va a ejecutarse en el "Main Thr
ead" sin
embargo eso no quiere decir que, implique que van a tener una parte visible, por
ejemplo,
el reproductor musical es un ejemplo de un servicio, adems de estos dos, vamos a
tener
los receptores de difusin o "Broadcast receivers" que van a capturar en el moment
o del que se
emita, una difusin o un "Broadcast" y los tres "Activity" "Broadcast receivers" y
"Services"
son activados con "Intents" un "Intent" es la intensin de hacer algo, a travs de
los "Intents" vamos a poder decir, ok, este "Activity" ahora va ser uso de este
servicio
o este "Activity" va iniciar este otro "Activity" o vamos a enviar un "Broadcast
" todo esto
se hace a travs de los "Intent", las actividades tiene un ciclo de vida, desde qu
e son creadas
hasta que son destruidas, el mtodo ms importante de este ciclo de vida, es cuando
la Actividad es creada, cada uno de los pasos del ciclo de vida, se refleja en u
n mtodo
de cdigo de "JAVA" vamos a necesitar forzosamente implementar por lo menos uno de
estos mtodos
que es "onCreate" cuando la Actividad es creada, sin embargo, para poder mantene
r al usuario,
informado y poder realizar diferentes cambios de mi aplicacin, en conjunto con lo
que
el usuario est haciendo, necesitamos muchas veces, implementar ms de algunos mtodos
,
por ejemplo "onPause" y "onResume" cuando la actividad se va a pausa y cuando re
gresa
de esa pausa, porque estoy cambiando de actividad, incluso puede ser que est camb
iando de aplicacin,
cuando va ser destruida la actividad, utilizamos el mtodo "onDestroy" este ciclo
de vida
es bastante til de conocerlo, aunque no lo estemos usando por completo, en todas
las
aplicaciones y en todas las actividades, platicbamos antes de la activacin de los
componentes,
el "Intent" me va permitir registrarme de cierta forma, para poder hacer algunas
acciones
comunes a travs de filtros, entonces voy a definir "Intent Filter" que van a de c
ierta
forma, indicar cmo reacciona, ante alguna, algn evento, por ejemplo el ms comn
de esto es cuando le pongo un "Intent Filter" de "Laucher" a una actividad, para
que cuando
se abre la aplicacin sea esta actividad la que se lance, con los "intents" podemo
s
instanciar de varias formas, y principalmente tenemos dos tipos de "intents" cua
ndo vamos
a tener algo que est definido por nosotros o cuando es definido por el sistema, p
uede
ser implcito o explicito, por ejemplo, si yo tomo un "intent" y le digo que la ac
cin
es una constante, definida por "Android" es "ActionView" y le envo un "URL" el si
stema
lo que va hacer es decir, A! ok, lo que quieres es visualizar este "URL" y abre e
l
navegador o alguna de las aplicaciones que tengamos instalas, para poder respond
er ante
este evento, tambin por otro lado podra ser, que quiero empezar una actividad de m
i
aplicacin, que yo mismo defin, entonces all defino de forma explcita, vamos a
iniciar esta clase de "JAVA" que representa una actividad, el ltimo de los compon
entes,
es el "Content Provider" este maneja datos y es activado no con "Intent" sino co
n "Content
Resolver" este componentes no es tan comn, a menos a que yo quiera poner datos, n
o tengo
una necesidad de usar un "Content Provider" si voy a usar una base de datos "SQL
" tengo
necesidad de usarlo si voy a exponer datos a terceros, yo puedo usar un "Content
Provider"
por ejemplo: para la galera, para los contactos, para diferentes cosas, pero en l
a mayora
de casos, no voy a tener necesidad de hacerlo, sino ms bien voy a consumir de otr
os "Content
Provider" existentes, algunos que provee el mismo sistema, otros que provee haci
a terceros,
ahora todo esto entra en funcionar en conjunto, cuando por ejemplo tengo una act
ividad y voy
a pasar de una actividad que tiene un listado a una actividad que tiene un detal
le de uno
de estos elementos, haciendo un clic, esto requiere un "Intent" puede ser que al
ver
el detalle, necesite actualizar, entonces voy a tener un servicio que se encargu
e de
eso, el servicio va hacer uso de un "Broadcast" para avisar que ocurri algo, la a
ctualizacin
y voy a traer datos usando un "Content Provider", all estn los bloques bsicos inter
actuando,
y adems de los bloques bsicos voy a tener un archivo de configuracin, es el "Androi
d
Manifest" es un archivo "xml" donde voy a colocar por ejemplo los permisos, voy
a colocar
metadata, voy a colocar una descripcin de las actividades que tengo, voy a coloca
r que
filtros de "intent" voy a estar utilizando y en general toda la configuracin nece
saria,
para que mi aplicacin funcione, recapitulando, los bloque bsicos para "Android" so
n "ACTIVIDADES"
"SERVICIOS" "RECEPTORES DE DIFUSION" y "CONTENT PROVIDER" los primeros tres acti
vidades, receptores
de difusin y servicios, son activados con "intents", el ultimo el "Content Provid
er"
es activado con un "Content Resolver" y todo dentro de la aplicacin lo voy a conf
igurar
con un archivo "xlm" que se llame "Android Manifest"
(((Msica)) )
Vamos a platicar de Fragmentos
este es un tema dentro de la arquitectura ""Android" que es muy
interesante y a la vez tiende a complicarnos un poquito el proceso de
desarrollo y por eso es importante conocer la profundidad para ver de qu
forma podemos lidiar con todas las complicaciones que nos podra traer una
vez nos traiga tambin beneficios y por ello elegimos usar esta, este
componente dentro de "Android" un fragmento, va a representar un cierto
comportamiento una porcin de interfaz grfica de alguna forma con la que el
usuario est interactuando podra tener mltiples fragmentos dentro de
una misma actividad y es importante aclarar que siempre un fragmento tiene
que pertenecer a una actividad, es decir tiene que haber una actividad que sea
como la anfitriona y el fragmento va a ser un invitado que formas parte de este
contexto ms grande que es la actividad
ahora esto surgi con el objetivo de brindarnos flexibilidad, hace un poco de
tiempo en el momento en que se trabaj "Android 3.0"
no s si recordarn "Android 3.0" se trataba de tablets y luego en la
versin cuatro hubo una unin entre dos, tres, tres y tres para dejar una sola versin
de "Android"
para todos los dispositivos
entonces la idea era que yo pudiera tener por ejemplo un maestro detalle no
le tengo un listado de cosas en el mvil y al hacer click sobre un
elemento me lleva a otra pantalla en donde voy a ver este resultado ahora s
los tengo en una tablet por ejemplo una tablet que va a ser una pantalla mucho
ms grande
entonces puedo verlo en la misma pantalla el listado por un lado y el
contenido por otro
sin embargo, poco a poco se fue ampliando el uso de los fragmentos y la verdad e
s
un modulo, es muy conveniente es cada vez ms se usa para diferentes
cosas y hay cuestiones de navegacin de "Android" que utilizan fragmentos por
ejemplo:
"Navegation View" o por ejemplo un "View Page"
hay cosas como los mapas que el soporte viene tambin en fragmentos y cada vez
es ms comn que muchas cosas de "Android" se encuentren como fragmentos
dentro de los fragmentos hay varios mtodos que son muy importantes por
ejemplo "onActivityCreated" que este mtodo se manda llamar cuando la
actividad es creada
recordemos el fragmento va a ser parte de una actividad por lo tanto necesito
controlar cuando hay un evento en el ciclo de vida de la actividad, otro
mtodo importante "onCreateView" a diferencia de la actividad que tiene un
mtodo "onCreate" en donde hacemos un "SetContentView" en el caso de los
fragmentos cuando se ejecuta "onCreateView" voy a tener que convertir el archivo
xml
hacia algo que pueda visualizar, de tal forma que tenga contenidos
entonces hay varios mtodos y todos ellos se describen en el ciclo de vida
del fragmento , vamos a platicar de eso en un minuto, mientras llegamos a eso
tambin quera mencionar que hay varias formas de crear un fragmento
esto se puede hacer en cdigo podramos llamarle esto una forma
esttica en donde del "xml" yo agrego un componente y le pongo "FragmentName"
y el nombre de la clase de mi fragmento y pongo todas las propiedades del
fragmento eso es una forma esttica y hay una forma dinmica la forma
dinmica y es cuando lo agreg con cdigo en tiempo ejecucin por alguna
razn necesito el fragmento y all coloc los valores, cuando va a ser de
forma dinmica
necesito que el fragmento tenga un constructor vaco y voy a usar un
"FragmentManager" que esto me lo provee la actividad para poder administrar
dependiendo del caso de uso va a cambiar un poco que conviene usar si un
fragmento de forma esttica o un fragmento de forma dinmica
recordemos la actividad tiene un ciclo de vida y en base a este ciclo de vida
tenemos varios eventos con los que vamos a ir teniendo una interaccin por
ejemplo "onCreated"
"onResume" "onStart" etctera y el fragmento a su vez, va a tener tambin
un ciclo de vida para permitir no saber en qu estado se encuentra de todo lo
que est ocurriendo
si sumamos "A" ms "B" si tenemos el ciclo de vida del fragmento dentro del ciclo
de la actividad y esto puede llegar a ser muy complicado
entonces por ejemplo alguien dice que en el fragmento tenemos varios estados que
incluyen al crearlo, al visualizarlo, el momento en que nos frustramos, el momen
to
en que ya no queremos usar fragmentos y en el momento en que aceptamos la
realidad de que, es una necesidad de "Android"
obviamente esto es un chiste pero a ese punto podemos llegar con los fragmentos
porque tiende a crecer el ciclo de vida y ha llegado un punto en donde no es
algo de fcil comprensin
es muy complejo y tenemos la disyuntiva de qu hacer
usamos fragmentos y nos sometemos a este ciclo de vida tan complejo o por otro
lado decidimos no usarlos y nos quedamos sin ese apoyo de modularizacin
la recomendacin es, elegir una opcin entre todos los que hay que podramos
hacer por ejemplo podramos ver una sola actividad y todos controlarlo con
fragmentos para que sea ms fcil
este control utilizamos un "Navigate Manager"
bsicamente lo que hacen el "Navigate Manager" es saber de dnde vengo a
dnde voy?, porque estoy haciendo ese cambio? otra opcin es usar muchas
actividades con vistas reutilizables
estas vistas reutilizables van a ir dentro de un fragmento que a su vez van
a ir dentro de las actividades y una tercera opcin, es que puede incluir los
fragmentos, pueda usar este ciclo de vida tan complejo pero para la comunicacin
haga uso de, algo diferente a lo que el fragmento provee cmo se comunica el
fragmento con una actividad?
usualmente dentro del fragmento puedo ser un "getActivity" y dentro de la
actividad, tengo mi listado de fragmentos o puedo obtener alguno
dependiendo si es esttico y dinmico y entonces usualmente defino una
interfaz cdigo de "JAVA" que uno de los dos componentes
va a tener una instancia y el otro componente lo va implementar
atravs de esta interfaz, puedo enviar eventos de uno a otro, una alternativa a
ello sera usar una librera como "Event Bus"
otra alternativa podra ser usar programacin reactiva y de cierta forma
reaccionar ante los eventos del fragmento y al final del da lo que
hagamos va a depender mucho de nuestra aproximacin en la arquitectura
tambin, en nuestro caso vamos a ver en uso de fragmentos y eventualmente cuando
platicamos un poco de la arquitectura
vamos a ver las recomendaciones y nos vamos a dar cuenta que la modularizacin
nos es muy til y no tenemos necesidad de pasar por este proceso tan complejo
de saber en qu momento del ciclo de vida nos encontramos
recapitulando un poco los fragmentos nos permiten modularizar el contenidos
estn en "Android" desde la versin tres
la versin cuatro de mviles podramos decir, la versin tres es de tablets, hay
algunos desarrolladores que abogan por no usar fragmentos por lo complicado que
tiende a ser el ciclo de vida para comunicarnos con fragmentos usamos
interfaces con "CallBacks" y hay algunas alternativas para que l trabajar con
fragmentos no sea tan doloroso entre ellas va estar el trabajar con una
arquitectura bien definida y que esto nos va a imponer una forma de acceder al
"UI"al final del da
va a ser una decisin de cada desarrollador, decidir si quiere usar
fragmentos o no.

You might also like