<html devsite="true">
  <head>
    <title>RemoteMediator.InitializeAction</title>
{% setvar book_path %}/reference/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/_java_switcher2.md" %}
    <p>
      <pre>enum RemoteMediator.InitializeAction</pre>
    </p>
    <hr>
    <p>Return type of <code><a href="/reference/androidx/paging/RemoteMediator.html#initialize()">initialize</a></code>, which signals the action to take after <code><a href="/reference/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/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> asynchronously with load type <code><a href="/reference/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/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> with load type <code><a href="/reference/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 fields</h3></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><code>final <a href="https://developer.android.com/reference/java/lang/String.html">String</a></code></td>
            <td width="100%">
              <div><code><a href="/reference/androidx/paging/RemoteMediator.InitializeAction.html#name()">name</a></code></div>
            </td>
          </tr>
          <tr>
            <td><code>final int</code></td>
            <td width="100%">
              <div><code><a href="/reference/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"><a href="/reference/androidx/paging/RemoteMediator.InitializeAction.html">RemoteMediator.InitializeAction</a>&nbsp;<a href="/reference/androidx/paging/RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH.html">RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH</a></pre>
      <p>Immediately dispatch a <code><a href="/reference/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> asynchronously with load type <code><a href="/reference/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"><a href="/reference/androidx/paging/RemoteMediator.InitializeAction.html">RemoteMediator.InitializeAction</a>&nbsp;<a href="/reference/androidx/paging/RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH.html">RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH</a></pre>
      <p>Wait for a refresh request from the UI before dispatching <code><a href="/reference/androidx/paging/RemoteMediator.html#load(androidx.paging.LoadType,androidx.paging.PagingState)">load</a></code> with load type <code><a href="/reference/androidx/paging/LoadType.REFRESH.html">LoadType.REFRESH</a></code>.</p>
    </div>
    <h2>Public fields</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">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/java/lang/String.html">String</a>&nbsp;<a href="/reference/androidx/paging/RemoteMediator.InitializeAction.html#name()">name</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">public&nbsp;final&nbsp;int&nbsp;<a href="/reference/androidx/paging/RemoteMediator.InitializeAction.html#ordinal()">ordinal</a></pre>
    </div>
  </body>
</html>
