{"id":532,"date":"2023-09-02T11:11:39","date_gmt":"2023-09-02T11:11:39","guid":{"rendered":"https:\/\/porfolio.thatta.es\/?page_id=532"},"modified":"2025-02-12T17:59:13","modified_gmt":"2025-02-12T17:59:13","slug":"532-2","status":"publish","type":"page","link":"https:\/\/porfolio.thatta.es\/?page_id=532","title":{"rendered":"App-muestra proyecto"},"content":{"rendered":"<p>[et_pb_section fb_built=\u00bb1&#8243; admin_label=\u00bbHeader\u00bb _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb custom_width_px__hover=\u00bb1080px\u00bb custom_width_px__hover_enabled=\u00bb1080px\u00bb custom_width_percent__hover=\u00bb80%\u00bb custom_width_percent__hover_enabled=\u00bb80%\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb parallax_1__hover=\u00bboff\u00bb parallax_1__hover_enabled=\u00bboff\u00bb parallax_2__hover=\u00bboff\u00bb parallax_2__hover_enabled=\u00bboff\u00bb parallax_3__hover=\u00bboff\u00bb parallax_3__hover_enabled=\u00bboff\u00bb parallax_method_1__hover=\u00bbon\u00bb parallax_method_1__hover_enabled=\u00bbon\u00bb parallax_method_2__hover=\u00bbon\u00bb parallax_method_2__hover_enabled=\u00bbon\u00bb parallax_method_3__hover=\u00bbon\u00bb parallax_method_3__hover_enabled=\u00bbon\u00bb use_background_color_gradient__hover=\u00bboff\u00bb use_background_color_gradient__hover_enabled=\u00bboff\u00bb background_color_gradient_start__hover=\u00bb#2b87da\u00bb background_color_gradient_start__hover_enabled=\u00bb#2b87da\u00bb background_color_gradient_end__hover=\u00bb#29c4a9&#8243; background_color_gradient_end__hover_enabled=\u00bb#29c4a9&#8243; background_color_gradient_type__hover=\u00bblinear\u00bb background_color_gradient_type__hover_enabled=\u00bblinear\u00bb background_color_gradient_direction__hover=\u00bb180deg\u00bb background_color_gradient_direction__hover_enabled=\u00bb180deg\u00bb background_color_gradient_direction_radial__hover=\u00bbcenter\u00bb background_color_gradient_direction_radial__hover_enabled=\u00bbcenter\u00bb background_color_gradient_start_position__hover=\u00bb0%\u00bb background_color_gradient_start_position__hover_enabled=\u00bb0%\u00bb background_color_gradient_end_position__hover=\u00bb100%\u00bb background_color_gradient_end_position__hover_enabled=\u00bb100%\u00bb background_color_gradient_overlays_image__hover=\u00bboff\u00bb background_color_gradient_overlays_image__hover_enabled=\u00bboff\u00bb parallax__hover=\u00bboff\u00bb parallax__hover_enabled=\u00bboff\u00bb parallax_method__hover=\u00bbon\u00bb parallax_method__hover_enabled=\u00bbon\u00bb background_size__hover=\u00bbcover\u00bb background_size__hover_enabled=\u00bbcover\u00bb background_position__hover=\u00bbcenter\u00bb background_position__hover_enabled=\u00bbcenter\u00bb background_repeat__hover=\u00bbno-repeat\u00bb background_repeat__hover_enabled=\u00bbno-repeat\u00bb background_blend__hover=\u00bbnormal\u00bb background_blend__hover_enabled=\u00bbnormal\u00bb allow_player_pause__hover=\u00bboff\u00bb allow_player_pause__hover_enabled=\u00bboff\u00bb background_video_pause_outside_viewport__hover=\u00bbon\u00bb background_video_pause_outside_viewport__hover_enabled=\u00bbon\u00bb inner_shadow__hover=\u00bboff\u00bb inner_shadow__hover_enabled=\u00bboff\u00bb make_fullwidth__hover=\u00bboff\u00bb make_fullwidth__hover_enabled=\u00bboff\u00bb use_custom_width__hover=\u00bboff\u00bb use_custom_width__hover_enabled=\u00bboff\u00bb width_unit__hover=\u00bbon\u00bb width_unit__hover_enabled=\u00bbon\u00bb make_equal__hover=\u00bboff\u00bb make_equal__hover_enabled=\u00bboff\u00bb use_custom_gutter__hover=\u00bboff\u00bb use_custom_gutter__hover_enabled=\u00bboff\u00bb border_radii__hover=\u00bbon||||\u00bb border_radii__hover_enabled=\u00bbon||||\u00bb box_shadow_style__hover=\u00bbnone\u00bb box_shadow_style__hover_enabled=\u00bbnone\u00bb box_shadow_color__hover=\u00bbrgba(0,0,0,0.3)\u00bb box_shadow_color__hover_enabled=\u00bbrgba(0,0,0,0.3)\u00bb max_width__hover=\u00bb100%\u00bb max_width__hover_enabled=\u00bb100%\u00bb filter_hue_rotate__hover=\u00bb0deg\u00bb filter_hue_rotate__hover_enabled=\u00bb0deg\u00bb filter_saturate__hover=\u00bb100%\u00bb filter_saturate__hover_enabled=\u00bb100%\u00bb filter_brightness__hover=\u00bb100%\u00bb filter_brightness__hover_enabled=\u00bb100%\u00bb filter_contrast__hover=\u00bb100%\u00bb filter_contrast__hover_enabled=\u00bb100%\u00bb filter_invert__hover=\u00bb0%\u00bb filter_invert__hover_enabled=\u00bb0%\u00bb filter_sepia__hover=\u00bb0%\u00bb filter_sepia__hover_enabled=\u00bb0%\u00bb filter_opacity__hover=\u00bb100%\u00bb filter_opacity__hover_enabled=\u00bb100%\u00bb filter_blur__hover=\u00bb0px\u00bb filter_blur__hover_enabled=\u00bb0px\u00bb mix_blend_mode__hover=\u00bbnormal\u00bb mix_blend_mode__hover_enabled=\u00bbnormal\u00bb animation_style__hover=\u00bbnone\u00bb animation_style__hover_enabled=\u00bbnone\u00bb animation_repeat__hover=\u00bbonce\u00bb animation_repeat__hover_enabled=\u00bbonce\u00bb animation_direction__hover=\u00bbcenter\u00bb animation_direction__hover_enabled=\u00bbcenter\u00bb animation_duration__hover=\u00bb1000ms\u00bb animation_duration__hover_enabled=\u00bb1000ms\u00bb animation_delay__hover=\u00bb0ms\u00bb animation_delay__hover_enabled=\u00bb0ms\u00bb animation_intensity_slide__hover=\u00bb50%\u00bb animation_intensity_slide__hover_enabled=\u00bb50%\u00bb animation_intensity_zoom__hover=\u00bb50%\u00bb animation_intensity_zoom__hover_enabled=\u00bb50%\u00bb animation_intensity_flip__hover=\u00bb50%\u00bb animation_intensity_flip__hover_enabled=\u00bb50%\u00bb animation_intensity_fold__hover=\u00bb50%\u00bb animation_intensity_fold__hover_enabled=\u00bb50%\u00bb animation_intensity_roll__hover=\u00bb50%\u00bb animation_intensity_roll__hover_enabled=\u00bb50%\u00bb animation_starting_opacity__hover=\u00bb0%\u00bb animation_starting_opacity__hover_enabled=\u00bb0%\u00bb animation_speed_curve__hover=\u00bbease-in-out\u00bb animation_speed_curve__hover_enabled=\u00bbease-in-out\u00bb hover_transition_duration__hover=\u00bb300ms\u00bb hover_transition_duration__hover_enabled=\u00bb300ms\u00bb hover_transition_delay__hover=\u00bb0ms\u00bb hover_transition_delay__hover_enabled=\u00bb0ms\u00bb hover_transition_speed_curve__hover=\u00bbease\u00bb hover_transition_speed_curve__hover_enabled=\u00bbease\u00bb background_color_gradient_stops__hover=\u00bb#2b87da 0%|#29c4a9 100%\u00bb][et_pb_row _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; saved_specialty_column_type=\u00bb1_2&#8243; _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|||\u00bb global_colors_info=\u00bb{}\u00bb parallax__hover=\u00bboff\u00bb parallax_method__hover=\u00bbon\u00bb custom_padding__hover=\u00bb|||\u00bb][et_pb_divider color=\u00bb#ad23ed\u00bb divider_weight=\u00bb16px\u00bb _builder_version=\u00bb4.17.3&#8243; _module_preset=\u00bbdefault\u00bb max_width=\u00bb48px\u00bb module_alignment=\u00bbcenter\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_divider][et_pb_text _builder_version=\u00bb4.22.1&#8243; _module_preset=\u00bbdefault\u00bb text_font=\u00bb||||||||\u00bb text_line_height=\u00bb2em\u00bb header_font=\u00bbPoppins|600|||||||\u00bb header_font_size=\u00bb50px\u00bb header_line_height=\u00bb1.3em\u00bb text_orientation=\u00bbcenter\u00bb header_font_size_tablet=\u00bb30px\u00bb header_font_size_phone=\u00bb24px\u00bb header_font_size_last_edited=\u00bbon|desktop\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1>App-muestra arquitectura Android<\/h1>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/porfolio.thatta.es\/wp-content\/uploads\/2023\/09\/Logo-Android.png\u00bb title_text=\u00bbLogo-Android\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.22.1&#8243; _module_preset=\u00bbdefault\u00bb max_height=\u00bb190px\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb text_font=\u00bb||||||||\u00bb text_font_size=\u00bb18px\u00bb text_line_height=\u00bb2em\u00bb header_font=\u00bbPoppins|600|||||||\u00bb header_font_size=\u00bb40px\u00bb header_line_height=\u00bb1.3em\u00bb text_orientation=\u00bbcenter\u00bb hover_enabled=\u00bb0&#8243; text_font_size_tablet=\u00bb16px\u00bb text_font_size_phone=\u00bb14px\u00bb text_font_size_last_edited=\u00bbon|phone\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb custom_padding=\u00bb8px|||||\u00bb sticky_enabled=\u00bb0&#8243;]<\/p>\n<p>La aplicaci\u00f3n \u00abCounter Classic XML Views MVVM\u00bb es un contador que avanza 10 unidades por segundo. Adem\u00e1s, te permite marcar \u00abmomentos\u00bb en el tiempo con un bot\u00f3n, y quedan registrados en una lista para que puedas verlos.<\/p>\n<p>Esta aplicaci\u00f3n est\u00e1 dise\u00f1ada y programada siguiendo las mejores pr\u00e1cticas recomendadas por Google, incorporando las ventajas de StateFlow. Es una excelente muestra de mis conocimientos de arquitectura Android en la actualidad.<\/p>\n<p><a href=\"https:\/\/github.com\/ThattaPY\/CounterClassicXMLViewsMVVM\/tree\/master\" target=\"_blank\" rel=\"noopener\">Link de gitHub con el proyecto completo.<\/a><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00bb1&#8243; admin_label=\u00bbStrategy\u00bb _builder_version=\u00bb4.17.3&#8243; _module_preset=\u00bbdefault\u00bb background_color=\u00bb#ad23ed\u00bb custom_margin=\u00bb|40px||40px||true\u00bb custom_margin_tablet=\u00bb\u00bb custom_margin_phone=\u00bb|10px||10px||true\u00bb custom_margin_last_edited=\u00bbon|desktop\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_row column_structure=\u00bb1_3,2_3&#8243; _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb1_3&#8243; _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|||\u00bb global_colors_info=\u00bb{}\u00bb custom_padding__hover=\u00bb|||\u00bb][\/et_pb_column][et_pb_column type=\u00bb2_3&#8243; _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|||\u00bb global_colors_info=\u00bb{}\u00bb custom_padding__hover=\u00bb|||\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb text_font=\u00bb||||||||\u00bb text_line_height=\u00bb2em\u00bb link_font=\u00bb||||||||\u00bb link_text_color=\u00bb#3fd3ce\u00bb header_font=\u00bb||||||||\u00bb header_2_font=\u00bbPoppins|600|||||||\u00bb header_2_font_size=\u00bb80px\u00bb header_2_line_height=\u00bb1.4em\u00bb header_3_font=\u00bbPoppins|600|||||||\u00bb header_3_font_size=\u00bb20px\u00bb header_3_line_height=\u00bb1.6em\u00bb background_layout=\u00bbdark\u00bb custom_margin=\u00bb|||-24px||\u00bb custom_padding=\u00bb|0px||||\u00bb hover_enabled=\u00bb0&#8243; header_2_font_size_tablet=\u00bb24px\u00bb header_2_font_size_phone=\u00bb18px\u00bb header_2_font_size_last_edited=\u00bbon|phone\u00bb header_3_font_size_tablet=\u00bb\u00bb header_3_font_size_phone=\u00bb16px\u00bb header_3_font_size_last_edited=\u00bbon|phone\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb sticky_enabled=\u00bb0&#8243;]<\/p>\n<h2 style=\"text-align: left;\">Descripci\u00f3n t\u00e9cnica de la app<\/h2>\n<p>Counter Classic es una aplicaci\u00f3n de demostraci\u00f3n desarrollada en Kotlin, dise\u00f1ada para ejemplificar una implementaci\u00f3n estructurada y modular de la arquitectura MVVM en Android. Con un enfoque en las mejores pr\u00e1cticas recomendadas por Google, la aplicaci\u00f3n muestra c\u00f3mo gestionar el estado de la UI, interactuar con datos de manera eficiente y estructurar el c\u00f3digo para mejorar la escalabilidad y mantenibilidad del proyecto.<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/porfolio.thatta.es\/wp-content\/uploads\/2023\/09\/counter-mvvm-architecture.png\u00bb title_text=\u00bbcounter mvvm architecture\u00bb _builder_version=\u00bb4.22.1&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=\u00bb3_5,2_5&#8243; _builder_version=\u00bb4.19.2&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb3_5&#8243; _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|||\u00bb global_colors_info=\u00bb{}\u00bb custom_padding__hover=\u00bb|||\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb text_font=\u00bb||||||||\u00bb text_line_height=\u00bb2em\u00bb link_font=\u00bb||||||||\u00bb link_text_color=\u00bb#3fd3ce\u00bb header_font=\u00bb||||||||\u00bb header_2_font=\u00bbPoppins|600|||||||\u00bb header_2_font_size=\u00bb80px\u00bb header_2_line_height=\u00bb1.4em\u00bb header_3_font=\u00bbPoppins|600|||||||\u00bb header_3_font_size=\u00bb20px\u00bb header_3_line_height=\u00bb1.6em\u00bb background_layout=\u00bbdark\u00bb custom_padding=\u00bb|||6px||\u00bb hover_enabled=\u00bb0&#8243; header_2_font_size_tablet=\u00bb24px\u00bb header_2_font_size_phone=\u00bb18px\u00bb header_2_font_size_last_edited=\u00bbon|phone\u00bb header_3_font_size_tablet=\u00bb\u00bb header_3_font_size_phone=\u00bb16px\u00bb header_3_font_size_last_edited=\u00bbon|phone\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb sticky_enabled=\u00bb0&#8243;]<\/p>\n<h3><strong>Tecnolog\u00edas y Arquitectura Implementadas:<\/strong><\/h3>\n<p><strong>&#8211; Gesti\u00f3n de Dependencias con Hilt:<\/strong><br \/>Se implementa Hilt, la soluci\u00f3n oficial de inyecci\u00f3n de dependencias en Android, para desacoplar los componentes del sistema. Esto permite:<br \/>Un c\u00f3digo modular y f\u00e1cil de probar.<br \/>Inyecci\u00f3n eficiente de instancias de ViewModel, Repositorios y otras dependencias clave.<br \/>Gesti\u00f3n autom\u00e1tica del ciclo de vida de las dependencias, optimizando recursos.<\/p>\n<p><strong>&#8211; Manejo As\u00edncrono con Coroutines:<\/strong><br \/>El uso de Coroutines facilita la ejecuci\u00f3n de tareas en segundo plano sin bloquear el hilo principal. Se emplea para:<br \/>Consultas y operaciones con Room sin bloquear la UI.<br \/>Llamadas as\u00edncronas dentro de los casos de uso, asegurando una ejecuci\u00f3n eficiente y estructurada.<br \/>Interoperabilidad con StateFlow y LiveData para una actualizaci\u00f3n fluida de la UI.<\/p>\n<p><strong>&#8211; Gesti\u00f3n de Estado con StateFlow &amp; LiveData:<\/strong><br \/>La aplicaci\u00f3n aprovecha StateFlow y LiveData para una reactividad \u00f3ptima en la UI:<br \/>StateFlow se usa en el ViewModel para emitir y manejar el estado del contador de manera estructurada.<br \/>LiveData facilita la observaci\u00f3n de cambios de estado en los componentes de la UI.<br \/>Se optimiza la actualizaci\u00f3n de la UI evitando renderizados innecesarios.<\/p>\n<p><strong>&#8211; ViewModel:<\/strong> Separaci\u00f3n de L\u00f3gica y Persistencia de Estado<br \/>El patr\u00f3n MVVM se implementa a trav\u00e9s de ViewModel, asegurando:<br \/>Separaci\u00f3n clara entre la l\u00f3gica de negocio y la interfaz de usuario.<br \/>Persistencia de datos en cambios de configuraci\u00f3n, evitando recreaciones innecesarias de la UI.<br \/>Comunicaci\u00f3n eficiente con la capa de dominio y datos mediante Casos de Uso y Repositorio.<\/p>\n<p><strong>&#8211; Casos de Uso (Use Cases):<\/strong> Aplicaci\u00f3n de Principios SOLID<br \/>Para mejorar la estructura y mantenimiento del c\u00f3digo, se emplea una capa de Casos de Uso que encapsula reglas de negocio espec\u00edficas:<br \/>Principio de Responsabilidad \u00danica (SRP): cada caso de uso tiene una \u00fanica funci\u00f3n espec\u00edfica.<br \/>Desacoplamiento de la l\u00f3gica de la UI, facilitando cambios sin afectar otras capas.<\/p>\n<p><strong>&#8211; Repositorio &amp; Room:<\/strong> Persistencia de Datos<br \/>Para gestionar el acceso a datos de manera eficiente, se implementa un Repositorio que interact\u00faa con la base de datos local Room:<br \/>La base de datos almacena el valor del contador para persistencia a largo plazo.<br \/>DAO (Data Access Object) permite consultas y actualizaciones eficientes sin afectar la UI.<br \/>Uso de Coroutines para asegurar operaciones en hilos de fondo.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=\u00bb2_5&#8243; _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|||\u00bb global_colors_info=\u00bb{}\u00bb custom_padding__hover=\u00bb|||\u00bb][et_pb_image src=\u00bbhttps:\/\/porfolio.thatta.es\/wp-content\/uploads\/2023\/09\/counter-mvvm-folders2.png\u00bb title_text=\u00bbcounter mvvm folders2&#8243; _builder_version=\u00bb4.22.1&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00bb1&#8243; _builder_version=\u00bb4.17.3&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_row _builder_version=\u00bb4.17.3&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.17.3&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_image src=\u00bbhttps:\/\/porfolio.thatta.es\/wp-content\/uploads\/2023\/09\/Logo-Android.png\u00bb title_text=\u00bbLogo-Android\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.22.1&#8243; _module_preset=\u00bbdefault\u00bb max_height=\u00bb198px\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00bb1&#8243; _builder_version=\u00bb4.17.3&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_row _builder_version=\u00bb4.19.2&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.17.3&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_button button_url=\u00bb@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF9saW5rX3VybF9wYWdlIiwic2V0dGluZ3MiOnsicG9zdF9pZCI6IjM3In19@\u00bb button_text=\u00bbVolver al porfolio\u00bb button_alignment=\u00bbcenter\u00bb _builder_version=\u00bb4.17.3&#8243; _dynamic_attributes=\u00bbbutton_url\u00bb _module_preset=\u00bbdefault\u00bb custom_button=\u00bbon\u00bb button_text_size=\u00bb12px\u00bb button_text_color=\u00bb#ffffff\u00bb button_bg_color=\u00bb#75c7ff\u00bb button_border_width=\u00bb2px\u00bb button_border_color=\u00bbrgba(145,145,145,0.26)\u00bb button_border_radius=\u00bb100px\u00bb button_letter_spacing=\u00bb1px\u00bb button_font=\u00bbPoppins|600||on|||||\u00bb button_icon=\u00bb&#xe046;||divi||400&#8243; button_on_hover=\u00bboff\u00bb custom_padding=\u00bb14px|58px|14px|40px|true|false\u00bb box_shadow_style=\u00bbpreset3&#8243; box_shadow_vertical=\u00bb30px\u00bb box_shadow_blur=\u00bb40px\u00bb box_shadow_spread=\u00bb-16px\u00bb box_shadow_color=\u00bbrgba(28,165,255,0.24)\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_button][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>App-muestra arquitectura AndroidLa aplicaci\u00f3n \u00abCounter Classic XML Views MVVM\u00bb es un contador que avanza 10 unidades por segundo. Adem\u00e1s, te permite marcar \u00abmomentos\u00bb en el tiempo con un bot\u00f3n, y quedan registrados en una lista para que puedas verlos. Esta aplicaci\u00f3n est\u00e1 dise\u00f1ada y programada siguiendo las mejores pr\u00e1cticas recomendadas por Google, incorporando las ventajas [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-532","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>App-muestra proyecto - Porfolio personal<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"App-muestra proyecto - Porfolio personal\" \/>\n<meta property=\"og:description\" content=\"App-muestra arquitectura AndroidLa aplicaci\u00f3n &quot;Counter Classic XML Views MVVM&quot; es un contador que avanza 10 unidades por segundo. Adem\u00e1s, te permite marcar &quot;momentos&quot; en el tiempo con un bot\u00f3n, y quedan registrados en una lista para que puedas verlos. Esta aplicaci\u00f3n est\u00e1 dise\u00f1ada y programada siguiendo las mejores pr\u00e1cticas recomendadas por Google, incorporando las ventajas [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/porfolio.thatta.es\/?page_id=532\" \/>\n<meta property=\"og:site_name\" content=\"Porfolio personal\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-12T17:59:13+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/porfolio.thatta.es\/?page_id=532\",\"url\":\"https:\/\/porfolio.thatta.es\/?page_id=532\",\"name\":\"App-muestra proyecto - Porfolio personal\",\"isPartOf\":{\"@id\":\"https:\/\/porfolio.thatta.es\/#website\"},\"datePublished\":\"2023-09-02T11:11:39+00:00\",\"dateModified\":\"2025-02-12T17:59:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/porfolio.thatta.es\/?page_id=532#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/porfolio.thatta.es\/?page_id=532\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/porfolio.thatta.es\/?page_id=532#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/porfolio.thatta.es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"App-muestra proyecto\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/porfolio.thatta.es\/#website\",\"url\":\"https:\/\/porfolio.thatta.es\/\",\"name\":\"Porfolio personal\",\"description\":\"S. \u00c1lvarez\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/porfolio.thatta.es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"App-muestra proyecto - Porfolio personal","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"App-muestra proyecto - Porfolio personal","og_description":"App-muestra arquitectura AndroidLa aplicaci\u00f3n \"Counter Classic XML Views MVVM\" es un contador que avanza 10 unidades por segundo. Adem\u00e1s, te permite marcar \"momentos\" en el tiempo con un bot\u00f3n, y quedan registrados en una lista para que puedas verlos. Esta aplicaci\u00f3n est\u00e1 dise\u00f1ada y programada siguiendo las mejores pr\u00e1cticas recomendadas por Google, incorporando las ventajas [&hellip;]","og_url":"https:\/\/porfolio.thatta.es\/?page_id=532","og_site_name":"Porfolio personal","article_modified_time":"2025-02-12T17:59:13+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/porfolio.thatta.es\/?page_id=532","url":"https:\/\/porfolio.thatta.es\/?page_id=532","name":"App-muestra proyecto - Porfolio personal","isPartOf":{"@id":"https:\/\/porfolio.thatta.es\/#website"},"datePublished":"2023-09-02T11:11:39+00:00","dateModified":"2025-02-12T17:59:13+00:00","breadcrumb":{"@id":"https:\/\/porfolio.thatta.es\/?page_id=532#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/porfolio.thatta.es\/?page_id=532"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/porfolio.thatta.es\/?page_id=532#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/porfolio.thatta.es\/"},{"@type":"ListItem","position":2,"name":"App-muestra proyecto"}]},{"@type":"WebSite","@id":"https:\/\/porfolio.thatta.es\/#website","url":"https:\/\/porfolio.thatta.es\/","name":"Porfolio personal","description":"S. \u00c1lvarez","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/porfolio.thatta.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=\/wp\/v2\/pages\/532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=532"}],"version-history":[{"count":18,"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=\/wp\/v2\/pages\/532\/revisions"}],"predecessor-version":[{"id":662,"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=\/wp\/v2\/pages\/532\/revisions\/662"}],"wp:attachment":[{"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}