<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bloque 2 on Documentación</title>
    <link>https://documentation.javiercarrasco.es/pmdm/B2/</link>
    <description>Recent content in Bloque 2 on Documentación</description>
    <generator>Hugo</generator>
    <language>es-es</language>
    <atom:link href="https://documentation.javiercarrasco.es/pmdm/B2/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Tema 2. Arquitectura MVVM y ViewModel</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B2/B2-T2_MVVM_ViewModel/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B2/B2-T2_MVVM_ViewModel/</guid>
      <description>&lt;h1 id=&#34;tema-2-arquitectura-mvvm-y-viewmodel&#34;&gt;Tema 2. Arquitectura MVVM y ViewModel&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del tema&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B2 — Arquitectura MVVM y desarrollo de aplicaciones Android&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Duración aproximada:&lt;/strong&gt; 14 horas&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA2 — Desarrolla aplicaciones para dispositivos móviles analizando y empleando las tecnologías y librerías específicas.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-2&#34;  /&gt;&lt;label for=&#34;tabs-0-2&#34;&gt;Criterios de Evaluación&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;Código&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Criterio&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA2-a&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se ha generado la estructura de clases necesaria para la aplicación.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA2-b&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han analizado y utilizado las clases que modelan ventanas, menús, alertas y controles para el desarrollo de aplicaciones gráficas sencillas.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA2-g&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han realizado pruebas de interacción usuario-aplicación para optimizar las aplicaciones desarrolladas a partir de emuladores.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA2-i&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han documentado los procesos necesarios para el desarrollo de las aplicaciones.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;dependencias-necesarias&#34;&gt;Dependencias necesarias&lt;a class=&#34;anchor&#34; href=&#34;#dependencias-necesarias&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34; title=&#34;Gradle&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-gradle&#34; data-lang=&#34;gradle&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// build.gradle.kts (app) — añadir a las del Bloque 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 2&lt;/span&gt;&lt;span&gt;dependencies &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 3&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// ViewModel y Lifecycle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 4&lt;/span&gt;&lt;span&gt;    implementation&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 5&lt;/span&gt;&lt;span&gt;    implementation&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;androidx.lifecycle:lifecycle-runtime-compose:2.10.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// Corrutinas&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 8&lt;/span&gt;&lt;span&gt;    implementation&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 9&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;10&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// Testing&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;11&lt;/span&gt;&lt;span&gt;    testImplementation&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;12&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote class=&#39;book-hint important&#39;&gt;&#xA;&lt;p&gt;Todos los artefactos &lt;code&gt;lifecycle-*&lt;/code&gt; deben compartir la misma versión. Consulta &lt;a href=&#34;https://developer.android.com/jetpack/androidx/releases/lifecycle&#34;&gt;la página de releases de Lifecycle&lt;/a&gt; para verificar la última versión estable antes de iniciar un nuevo proyecto.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tema 3. Navigation Compose</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B2/B2-T3_Navigation_Compose/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B2/B2-T3_Navigation_Compose/</guid>
      <description>&lt;h1 id=&#34;tema-3-navigation-compose&#34;&gt;Tema 3. Navigation Compose&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del tema&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B2 — Arquitectura MVVM y desarrollo de aplicaciones Android&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Duración aproximada:&lt;/strong&gt; 10 horas&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA2 — Desarrolla aplicaciones para dispositivos móviles analizando y empleando las tecnologías y librerías específicas.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-2&#34;  /&gt;&lt;label for=&#34;tabs-0-2&#34;&gt;Criterios de Evaluación&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;Código&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Criterio&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA2-a&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se ha generado la estructura de clases necesaria para la aplicación.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA2-c&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han utilizado las clases necesarias para la conexión y comunicación con dispositivos inalámbricos.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA2-g&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han realizado pruebas de interacción usuario-aplicación para optimizar las aplicaciones desarrolladas a partir de emuladores.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA2-i&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han documentado los procesos necesarios para el desarrollo de las aplicaciones.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;dependencias-necesarias&#34;&gt;Dependencias necesarias&lt;a class=&#34;anchor&#34; href=&#34;#dependencias-necesarias&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34; title=&#34;Gradle&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-gradle&#34; data-lang=&#34;gradle&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// build.gradle.kts — plugins (nivel de proyecto o settings.gradle.kts)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 2&lt;/span&gt;&lt;span&gt;plugins &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 3&lt;/span&gt;&lt;span&gt;    id&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;org.jetbrains.kotlin.plugin.serialization&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt; version &lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;2.3.10&amp;#34;&lt;/span&gt; apply &lt;span style=&#34;color:#fe640b&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// build.gradle.kts (app) — plugins del módulo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 7&lt;/span&gt;&lt;span&gt;plugins &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 8&lt;/span&gt;&lt;span&gt;    id&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;org.jetbrains.kotlin.plugin.serialization&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 9&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;10&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;11&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// build.gradle.kts (app) — dependencias&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;12&lt;/span&gt;&lt;span&gt;dependencies &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;13&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// Navigation Compose (API tipada disponible desde 2.8.0)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;14&lt;/span&gt;&lt;span&gt;    implementation&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;androidx.navigation:navigation-compose:2.9.7&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;15&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;16&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#9ca0b0;font-style:italic&#34;&gt;// Kotlin Serialization — imprescindible para las rutas @Serializable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;17&lt;/span&gt;&lt;span&gt;    implementation&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;org.jetbrains.kotlinx:kotlinx-serialization-json:1.10.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;18&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote class=&#39;book-hint important&#39;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Compatibilidad de versiones:&lt;/strong&gt; El plugin &lt;code&gt;kotlin.plugin.serialization&lt;/code&gt; debe tener &lt;strong&gt;exactamente la misma versión&lt;/strong&gt; que Kotlin. Si tu proyecto usa Kotlin 2.1.20, el plugin debe ser también 2.1.20. Una discrepancia producirá errores de compilación difíciles de diagnosticar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anexo 3. Referencia: StateFlow, corrutinas y arquitectura MVVM</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B2/B2-A3_Referencia_MVVM_StateFlow/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B2/B2-A3_Referencia_MVVM_StateFlow/</guid>
      <description>&lt;h1 id=&#34;anexo-3-referencia-stateflow-corrutinas-y-arquitectura-mvvm&#34;&gt;Anexo 3. Referencia: StateFlow, corrutinas y arquitectura MVVM&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del anexo&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tipo:&lt;/strong&gt; Anexo de apoyo — material de consulta y profundización&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B2 — Arquitectura MVVM y desarrollo de aplicaciones Android&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA2 — Desarrolla aplicaciones para dispositivos móviles analizando y empleando las tecnologías y librerías específicas.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-corrutinas-de-kotlin-referencia-completa-para-viewmodel&#34;&gt;1. Corrutinas de Kotlin: referencia completa para ViewModel&lt;a class=&#34;anchor&#34; href=&#34;#1-corrutinas-de-kotlin-referencia-completa-para-viewmodel&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;qué-es-una-corrutina&#34;&gt;Qué es una corrutina&lt;a class=&#34;anchor&#34; href=&#34;#qu%c3%a9-es-una-corrutina&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Una &lt;strong&gt;corrutina&lt;/strong&gt; es una unidad de trabajo que puede suspenderse y reanudarse sin bloquear el hilo en el que se ejecuta. Cuando una función &lt;code&gt;suspend&lt;/code&gt; espera un resultado (una respuesta de red, una consulta a la base de datos), libera el hilo para que otras tareas lo usen, y lo recupera cuando el resultado está disponible.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
