<html devsite="true">
  <head>
    <title>RemoteMediator.InitializeAction</title>
{% setvar book_path %}/reference/kotlin/androidx/_book.yaml{% endsetvar %}
{% include "_shared/_reference-head-tags.html" %}
  </head>
  <body>
    <h1>RemoteMediator.InitializeAction</h1>
{% setvar page_path %}androidx/paging/RemoteMediator.InitializeAction.html{% endsetvar %}
{% setvar can_switch %}1{% endsetvar %}
{% include "reference/_kotlin_switcher2.md" %}
    <p>
      <pre>enum RemoteMediator.InitializeAction</pre>
    </p>
    <hr>
    <p>Return type of <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#initialize()">initialize</a></code>, which signals the action to take after <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#initialize()">initialize</a></code> completes.</p>
    <h2>Summary</h2>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2"><h3>Enum Values</h3></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><code>LAUNCH_INITIAL_REFRESH</code></td>
            <td width="100%">
              <p>Immediately dispatch a <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> asynchronously with load type <code><a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>, to update paginated content when the stream is initialized.</p>
            </td>
          </tr>
          <tr>
            <td><code>SKIP_INITIAL_REFRESH</code></td>
            <td width="100%">
              <p>Wait for a refresh request from the UI before dispatching <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> with load type <code><a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>.</p>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2"><h3>Public properties</h3></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><code><a href="/reference/kotlin/kotlin/String.html">String</a></code></td>
            <td width="100%">
              <div><code><a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html#name()">name</a></code></div>
            </td>
          </tr>
          <tr>
            <td><code><a href="/reference/kotlin/kotlin/Int.html">Int</a></code></td>
            <td width="100%">
              <div><code><a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html#ordinal()">ordinal</a></code></div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <h2>Enum Values</h2>
    <div>
      <h3 class="api-name" id="LAUNCH_INITIAL_REFRESH">LAUNCH_INITIAL_REFRESH</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH.html">RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html">RemoteMediator.InitializeAction</a></pre>
      <p>Immediately dispatch a <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> asynchronously with load type <code><a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>, to update paginated content when the stream is initialized.</p>
    </div>
    <div>
      <h3 class="api-name" id="SKIP_INITIAL_REFRESH">SKIP_INITIAL_REFRESH</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH.html">RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH</a>:&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html">RemoteMediator.InitializeAction</a></pre>
      <p>Wait for a refresh request from the UI before dispatching <code><a href="/reference/kotlin/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> with load type <code><a href="/reference/kotlin/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>.</p>
    </div>
    <h2>Public properties</h2>
    <div><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
      <h3 class="api-name" id="name()">name</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html#name()">name</a>:&nbsp;<a href="/reference/kotlin/kotlin/String.html">String</a></pre>
    </div>
    <div><a name="getOrdinal()"></a><a name="setOrdinal()"></a><a name="getOrdinal--"></a><a name="setOrdinal--"></a>
      <h3 class="api-name" id="ordinal()">ordinal</h3>
      <pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/paging/RemoteMediator.InitializeAction.html#ordinal()">ordinal</a>:&nbsp;<a href="/reference/kotlin/kotlin/Int.html">Int</a></pre>
    </div>
  </body>
</html>
