mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Deploy website
Deploy website version based on 9200b50dcbf85064918f4352471a6186034ecd87
This commit is contained in:
@@ -71,7 +71,8 @@
|
||||
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/facebook/react-native-website/blob/master/docs/headless-js-android.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Headless JS</h1></header><article><div><span><p>Headless JS is a way to run tasks in JavaScript while your app is in the background. It can be used, for example, to sync fresh data, handle push notifications, or play music.</p>
|
||||
<h2><a class="anchor" aria-hidden="true" id="the-js-api"></a><a href="#the-js-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>The JS API</h2>
|
||||
<p>A task is a async function that you register on <code>AppRegistry</code>, similar to registering React applications:</p>
|
||||
<pre><code class="hljs css language-jsx">AppRegistry<span class="token punctuation">.</span><span class="token function">registerHeadlessTask</span><span class="token punctuation">(</span><span class="token string">'SomeTaskName'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'SomeTaskName'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<pre><code class="hljs css language-jsx"><span class="token keyword">import</span> <span class="token punctuation">{</span> AppRegistry <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"react-native"</span><span class="token punctuation">;</span>
|
||||
AppRegistry<span class="token punctuation">.</span><span class="token function">registerHeadlessTask</span><span class="token punctuation">(</span><span class="token string">'SomeTaskName'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'SomeTaskName'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<p>Then, in <code>SomeTaskName.js</code>:</p>
|
||||
<pre><code class="hljs css language-jsx">module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token keyword">async</span> <span class="token punctuation">(</span><span class="token parameter">taskData</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||||
@@ -81,7 +82,15 @@
|
||||
<p>You can do anything in your task such as network requests, timers and so on, as long as it doesn't touch UI. Once your task completes (i.e. the promise is resolved), React Native will go into "paused" mode (unless there are other tasks running, or there is a foreground app).</p>
|
||||
<h2><a class="anchor" aria-hidden="true" id="the-java-api"></a><a href="#the-java-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>The Java API</h2>
|
||||
<p>Yes, this does still require some native code, but it's pretty thin. You need to extend <code>HeadlessJsTaskService</code> and override <code>getTaskConfig</code>, e.g.:</p>
|
||||
<pre><code class="hljs css language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyTaskService</span> <span class="token keyword">extends</span> <span class="token class-name">HeadlessJsTaskService</span> <span class="token punctuation">{</span>
|
||||
<pre><code class="hljs css language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>your_application_name</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">android<span class="token punctuation">.</span>content</span><span class="token punctuation">.</span><span class="token class-name">Intent</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">android<span class="token punctuation">.</span>os</span><span class="token punctuation">.</span><span class="token class-name">Bundle</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">com<span class="token punctuation">.</span>facebook<span class="token punctuation">.</span>react</span><span class="token punctuation">.</span><span class="token class-name">HeadlessJsTaskService</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">com<span class="token punctuation">.</span>facebook<span class="token punctuation">.</span>react<span class="token punctuation">.</span>bridge</span><span class="token punctuation">.</span><span class="token class-name">Arguments</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">com<span class="token punctuation">.</span>facebook<span class="token punctuation">.</span>react<span class="token punctuation">.</span>jstasks</span><span class="token punctuation">.</span><span class="token class-name">HeadlessJsTaskConfig</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">javax<span class="token punctuation">.</span>annotation</span><span class="token punctuation">.</span><span class="token class-name">Nullable</span><span class="token punctuation">;</span>
|
||||
|
||||
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyTaskService</span> <span class="token keyword">extends</span> <span class="token class-name">HeadlessJsTaskService</span> <span class="token punctuation">{</span>
|
||||
|
||||
<span class="token annotation punctuation">@Override</span>
|
||||
<span class="token keyword">protected</span> <span class="token annotation punctuation">@Nullable</span> <span class="token class-name">HeadlessJsTaskConfig</span> <span class="token function">getTaskConfig</span><span class="token punctuation">(</span><span class="token class-name">Intent</span> intent<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
|
||||
@@ -71,7 +71,8 @@
|
||||
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/facebook/react-native-website/blob/master/docs/headless-js-android.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Headless JS</h1></header><article><div><span><p>Headless JS is a way to run tasks in JavaScript while your app is in the background. It can be used, for example, to sync fresh data, handle push notifications, or play music.</p>
|
||||
<h2><a class="anchor" aria-hidden="true" id="the-js-api"></a><a href="#the-js-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>The JS API</h2>
|
||||
<p>A task is a async function that you register on <code>AppRegistry</code>, similar to registering React applications:</p>
|
||||
<pre><code class="hljs css language-jsx">AppRegistry<span class="token punctuation">.</span><span class="token function">registerHeadlessTask</span><span class="token punctuation">(</span><span class="token string">'SomeTaskName'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'SomeTaskName'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<pre><code class="hljs css language-jsx"><span class="token keyword">import</span> <span class="token punctuation">{</span> AppRegistry <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"react-native"</span><span class="token punctuation">;</span>
|
||||
AppRegistry<span class="token punctuation">.</span><span class="token function">registerHeadlessTask</span><span class="token punctuation">(</span><span class="token string">'SomeTaskName'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'SomeTaskName'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<p>Then, in <code>SomeTaskName.js</code>:</p>
|
||||
<pre><code class="hljs css language-jsx">module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token keyword">async</span> <span class="token punctuation">(</span><span class="token parameter">taskData</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||||
@@ -81,7 +82,15 @@
|
||||
<p>You can do anything in your task such as network requests, timers and so on, as long as it doesn't touch UI. Once your task completes (i.e. the promise is resolved), React Native will go into "paused" mode (unless there are other tasks running, or there is a foreground app).</p>
|
||||
<h2><a class="anchor" aria-hidden="true" id="the-java-api"></a><a href="#the-java-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>The Java API</h2>
|
||||
<p>Yes, this does still require some native code, but it's pretty thin. You need to extend <code>HeadlessJsTaskService</code> and override <code>getTaskConfig</code>, e.g.:</p>
|
||||
<pre><code class="hljs css language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyTaskService</span> <span class="token keyword">extends</span> <span class="token class-name">HeadlessJsTaskService</span> <span class="token punctuation">{</span>
|
||||
<pre><code class="hljs css language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>your_application_name</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">android<span class="token punctuation">.</span>content</span><span class="token punctuation">.</span><span class="token class-name">Intent</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">android<span class="token punctuation">.</span>os</span><span class="token punctuation">.</span><span class="token class-name">Bundle</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">com<span class="token punctuation">.</span>facebook<span class="token punctuation">.</span>react</span><span class="token punctuation">.</span><span class="token class-name">HeadlessJsTaskService</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">com<span class="token punctuation">.</span>facebook<span class="token punctuation">.</span>react<span class="token punctuation">.</span>bridge</span><span class="token punctuation">.</span><span class="token class-name">Arguments</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">com<span class="token punctuation">.</span>facebook<span class="token punctuation">.</span>react<span class="token punctuation">.</span>jstasks</span><span class="token punctuation">.</span><span class="token class-name">HeadlessJsTaskConfig</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">import</span> <span class="token namespace">javax<span class="token punctuation">.</span>annotation</span><span class="token punctuation">.</span><span class="token class-name">Nullable</span><span class="token punctuation">;</span>
|
||||
|
||||
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyTaskService</span> <span class="token keyword">extends</span> <span class="token class-name">HeadlessJsTaskService</span> <span class="token punctuation">{</span>
|
||||
|
||||
<span class="token annotation punctuation">@Override</span>
|
||||
<span class="token keyword">protected</span> <span class="token annotation punctuation">@Nullable</span> <span class="token class-name">HeadlessJsTaskConfig</span> <span class="token function">getTaskConfig</span><span class="token punctuation">(</span><span class="token class-name">Intent</span> intent<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
|
||||
Reference in New Issue
Block a user