{"id":546,"date":"2023-09-02T12:09:02","date_gmt":"2023-09-02T12:09:02","guid":{"rendered":"https:\/\/porfolio.thatta.es\/?page_id=546"},"modified":"2023-09-16T03:06:57","modified_gmt":"2023-09-16T03:06:57","slug":"demo-app-arch-skills","status":"publish","type":"page","link":"https:\/\/porfolio.thatta.es\/?page_id=546","title":{"rendered":"Demo-App-arch-skills"},"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-shows Android architecture<\/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.22.1&#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 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]<\/p>\n<p>The \u00abCounter Classic XML Views MVVM\u00bb application is a time counter, it counts 10 units every second and has a button to set time flags, these flags record the current value of the counter and display them in a list.<\/p>\n<p>The purpose of this app is to show a clean, efficient and architectural code, in terms of software, that follows the best practices recommended by Google. MVVM implementing livedata, coroutines, room, singleton patterns, strings in strings folder, (simple) view with XML and constraint layout and some other cool stuff!<\/p>\n<p>&nbsp;<\/p>\n<p>Developed in Android Studio directly illustrates my Android architecture skills.<\/p>\n<p><a href=\"https:\/\/github.com\/ThattaPY\/CounterClassicXMLViewsMVVM\/tree\/master\" target=\"_blank\" rel=\"noopener\">Link &#8211; gitHub<\/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.22.1&#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 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]<\/p>\n<h2 style=\"text-align: left;\">Technical description of the app<\/h2>\n<p>Implementing room with coroutines, viewmodel with livedata and reactive UI, this small sample of my skills in Android app architecture focuses the code structure towards the best practices recommended by Google in terms of MVVM such as the use of ViewModels to format data for the UI, which has observers as a means of updating screen data. The UI operates with actions on the ViewModel which implements repository injection through a creational factory pattern for some IO operations that do not require user action, these that do respond to user interaction are treated in the usesCases, which are the CounterUseCase and InsertFlagUseCase.<\/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.22.1&#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|||5px||\u00bb 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]<\/p>\n<h3>File structure and overview of some relevant class of the app<\/h3>\n<p>The CounterUseCase class, located in the domain layer, is responsible for the unit counter (10 per second), which shows the screen at startup. This class uses coroutines and a Job variable to manage the counting cycle, one problem that arose was that the counter was speeding up in certain situations.<\/p>\n<p>This class implements an interface, which is injected into the viewModel from its factory method, the MainActivity instantiates the use case from the application class. This pattern (repeated in the repository and in the insert flag use case) allows decoupling of classes and maintains the best SOLID principles, which are adhered to to a fairly high degree.<\/p>\n<p>The dependencies that are injected are an example of manual dependency injection. The principle of single responsibility is fulfilled throughout the project.<\/p>\n<p>In short, it&#8217;s a sample project following many of the modern Android architecture and development best practices.<\/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-1.png\u00bb title_text=\u00bbcounter mvvm folders2&#8243; _builder_version=\u00bb4.22.1&#8243; _module_preset=\u00bbdefault\u00bb hover_enabled=\u00bb0&#8243; global_colors_info=\u00bb{}\u00bb sticky_enabled=\u00bb0&#8243;][\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00bb1&#8243; admin_label=\u00bbUser Experience\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 module_class=\u00bb et_pb_row_fullwidth\u00bb _builder_version=\u00bb4.16&#8243; _module_preset=\u00bbdefault\u00bb width=\u00bb89%\u00bb width_tablet=\u00bb80%\u00bb width_phone=\u00bb80%\u00bb width_last_edited=\u00bbon|desktop\u00bb max_width=\u00bb89%\u00bb max_width_tablet=\u00bb80%\u00bb max_width_phone=\u00bb80%\u00bb max_width_last_edited=\u00bbon|desktop\u00bb make_fullwidth=\u00bbon\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#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_button button_url=\u00bbhttps:\/\/porfolio.thatta.es\/wp-content\/uploads\/2023\/09\/Counter-Classic-XML-Views-MVVM.apk\u00bb url_new_window=\u00bbon\u00bb button_text=\u00bbDownload .apk (debug without sign)\u00bb button_alignment=\u00bbcenter\u00bb _builder_version=\u00bb4.22.1&#8243; _module_preset=\u00bbdefault\u00bb custom_button=\u00bbon\u00bb button_text_size=\u00bb12px\u00bb button_text_color=\u00bb#ffffff\u00bb button_bg_color=\u00bb#E09900&#8243; 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][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@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF9saW5rX3VybF9wYWdlIiwic2V0dGluZ3MiOnsicG9zdF9pZCI6IjQyOSJ9fQ==@\u00bb button_text=\u00bbReturns to portfolio\u00bb button_alignment=\u00bbcenter\u00bb _builder_version=\u00bb4.22.1&#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-shows Android architectureThe \u00abCounter Classic XML Views MVVM\u00bb application is a time counter, it counts 10 units every second and has a button to set time flags, these flags record the current value of the counter and display them in a list. The purpose of this app is to show a clean, efficient and architectural [&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-546","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>Demo-App-arch-skills - 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=\"Demo-App-arch-skills - Porfolio personal\" \/>\n<meta property=\"og:description\" content=\"App-shows Android architectureThe &quot;Counter Classic XML Views MVVM&quot; application is a time counter, it counts 10 units every second and has a button to set time flags, these flags record the current value of the counter and display them in a list. The purpose of this app is to show a clean, efficient and architectural [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/porfolio.thatta.es\/?page_id=546\" \/>\n<meta property=\"og:site_name\" content=\"Porfolio personal\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-16T03:06:57+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=546\",\"url\":\"https:\/\/porfolio.thatta.es\/?page_id=546\",\"name\":\"Demo-App-arch-skills - Porfolio personal\",\"isPartOf\":{\"@id\":\"https:\/\/porfolio.thatta.es\/#website\"},\"datePublished\":\"2023-09-02T12:09:02+00:00\",\"dateModified\":\"2023-09-16T03:06:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/porfolio.thatta.es\/?page_id=546#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/porfolio.thatta.es\/?page_id=546\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/porfolio.thatta.es\/?page_id=546#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/porfolio.thatta.es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Demo-App-arch-skills\"}]},{\"@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":"Demo-App-arch-skills - 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":"Demo-App-arch-skills - Porfolio personal","og_description":"App-shows Android architectureThe \"Counter Classic XML Views MVVM\" application is a time counter, it counts 10 units every second and has a button to set time flags, these flags record the current value of the counter and display them in a list. The purpose of this app is to show a clean, efficient and architectural [&hellip;]","og_url":"https:\/\/porfolio.thatta.es\/?page_id=546","og_site_name":"Porfolio personal","article_modified_time":"2023-09-16T03:06:57+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=546","url":"https:\/\/porfolio.thatta.es\/?page_id=546","name":"Demo-App-arch-skills - Porfolio personal","isPartOf":{"@id":"https:\/\/porfolio.thatta.es\/#website"},"datePublished":"2023-09-02T12:09:02+00:00","dateModified":"2023-09-16T03:06:57+00:00","breadcrumb":{"@id":"https:\/\/porfolio.thatta.es\/?page_id=546#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/porfolio.thatta.es\/?page_id=546"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/porfolio.thatta.es\/?page_id=546#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/porfolio.thatta.es\/"},{"@type":"ListItem","position":2,"name":"Demo-App-arch-skills"}]},{"@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\/546","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=546"}],"version-history":[{"count":8,"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=\/wp\/v2\/pages\/546\/revisions"}],"predecessor-version":[{"id":577,"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=\/wp\/v2\/pages\/546\/revisions\/577"}],"wp:attachment":[{"href":"https:\/\/porfolio.thatta.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}