Home | History | Annotate | Download | only in components
      1 page.title=
      2 page.tags=lifecycle,background
      3 
      4 @jd:body
      5 
      6 <div id="qv-wrapper">
      7 <div id="qv">
      8 
      9 <h2></h2>
     10 <ol>
     11 <li><a href="#Processes"></a>
     12   <ol>
     13     <li><a href="#Lifecycle"></a></li>
     14   </ol>
     15 </li>
     16 <li><a href="#Threads"></a>
     17   <ol>
     18     <li><a href="#WorkerThreads"> </a></li>
     19     <li><a href="#ThreadSafe"> </a></li>
     20   </ol>
     21 </li>
     22 <li><a href="#IPC">IPC</a></li>
     23 </ol>
     24 
     25 </div>
     26 </div>
     27 
     28 <p> Android   Linux 
     29 
     30  
     31  
     32 
     33 
     34 
     35 </p>
     36 
     37 <p>Android </p>
     38 
     39 
     40 <h2 id="Processes"></h2>
     41 
     42 <p>
     43  
     44 </p>
     45 
     46 <p> <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
     47 &lt;activity&gt;}</a><a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
     48 &lt;service&gt;}</a><a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
     49 &lt;receiver&gt;}</a><a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
     50 &lt;provider&gt;}</a> {@code android:process} &mdash;
     51 &mdash;
     52 {@code android:process}  Linux  ID 
     53 &mdash;
     54 
     55 </p>
     56 
     57 <p><a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
     58 &lt;application&gt;}</a>  {@code android:process} 
     59 </p>
     60 
     61 <p>Android 
     62  
     63 
     64 </p>
     65 
     66 <p>Android 
     67 
     68 
     69 
     70  </p>
     71 
     72 
     73 <h3 id="Lifecycle"></h3>
     74 
     75 <p>Android  
     76 
     77 
     78 
     79  
     80 
     81 </p>
     82 
     83 <p> 5 1 <em></em><em></em>
     84 
     85 </p>
     86 
     87 <ol>
     88   <li><b> </b>
     89     <p>
     90 </p>
     91 
     92       <ul>
     93         <li> {@link android.app.Activity} {@link
     94 android.app.Activity} {@link android.app.Activity#onResume onResume()} 
     95 </li>
     96 
     97         <li> {@link android.app.Service} 
     98 </li>
     99 
    100         <li>  {@link android.app.Service}  {@link android.app.Service#startForeground startForeground()} &mdash;
    101 
    102 
    103         <li>{@link android.app.Service#onCreate onCreate()}{@link android.app.Service#onStart
    104 onStart()}{@link android.app.Service#onDestroy onDestroy()}   {@link android.app.Service} 
    105 </li>
    106 
    107         <li>{@link
    108         android.content.BroadcastReceiver#onReceive onReceive()}  {@link android.content.BroadcastReceiver} </li>
    109     </ul>
    110 
    111     <p>2~3   
    112 &mdash;  
    113 
    114 </p></li>
    115 
    116   <li><b></b>
    117     <p> 
    118 
    119 </p>
    120 
    121       <ul>
    122         <li> {@link android.app.Activity} {@link android.app.Activity#onPause onPause()} 
    123 
    124 
    125 </li>
    126 
    127         <li> {@link android.app.Service} 
    128 </li>
    129       </ul>
    130 
    131       <p> 
    132  </p>
    133     </li>
    134 
    135   <li><b> </b>
    136     <p>{@link
    137 android.content.Context#startService startService()}  2 
    138   
    139 
    140 
    141  </p>
    142   </li>
    143 
    144   <li><b> </b>
    145     <p> {@link android.app.Activity#onStop onStop()} 
    146   
    147 
    148 
    149 LRU
    150 
    151  
    152 
    153 
    154 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities</a>
    155 </p>
    156   </li>
    157 
    158   <li><b></b>
    159     <p>  1 
    160 
    161   
    162 </p>
    163   </li>
    164 </ol>
    165 
    166 
    167   <p>Android 
    168   
    169 </p>
    170 
    171   <p>
    172 &mdash;
    173  A   B  A  B  A  B 
    174 
    175 </p>
    176 
    177   <p> <a href="{@docRoot}guide/components/services.html"></a> 
    178 
    179 
    180 
    181 
    182 
    183  
    184 </p>
    185 
    186 
    187 
    188 
    189 <h2 id="Threads"></h2>
    190 
    191 <p>  
    192   
    193  Android UI {@link
    194 android.widget}  {@link android.view} 
    195   UI 
    196 </p>
    197 
    198 <p><em></em> UI 
    199 
    200  {@link android.view.View#onKeyDown onKeyDown()}    UI 
    201 
    202 </p>
    203 
    204 <p> UI   
    205 
    206 UI 
    207 </p>
    208 
    209 <p>  
    210  UI  UI 
    211 
    212 
    213 
    214 UI  5 <a href="http://developer.android.com/guide/practices/responsiveness.html"></a>
    215 
    216 
    217 </p>
    218 
    219 <p>Android UI  <em></em>  UI UI 
    220 &mdash;
    221 Android    2 </p>
    222 
    223 <ol>
    224 <li>UI 
    225 <li>UI  Android UI 
    226 </ol>
    227 
    228 <h3 id="WorkerThreads"> </h3>
    229 
    230 <p>   UI  UI 
    231 
    232 
    233 </p>
    234 
    235 <p> {@link android.widget.ImageView}  
    236 </p>
    237 
    238 <pre>
    239 public void onClick(View v) {
    240     new Thread(new Runnable() {
    241         public void run() {
    242             Bitmap b = loadImageFromNetwork("http://example.com/image.png");
    243             mImageView.setImageBitmap(b);
    244         }
    245     }).start();
    246 }
    247 </pre>
    248 
    249 <p>
    250 <em>UI  Android UI </em>  2 UI   {@link
    251 android.widget.ImageView} &mdash;
    252 
    253 </p>
    254 
    255 <p>Android  UI 
    256 </p>
    257 
    258 <ul>
    259 <li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
    260 Activity.runOnUiThread(Runnable)}</li>
    261 <li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
    262 <li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
    263 long)}</li>
    264 </ul>
    265 
    266 <p> {@link
    267 android.view.View#post(java.lang.Runnable) View.post(Runnable)} </p>
    268 
    269 <pre>
    270 public void onClick(View v) {
    271     new Thread(new Runnable() {
    272         public void run() {
    273             final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
    274             mImageView.post(new Runnable() {
    275                 public void run() {
    276                     mImageView.setImageBitmap(bitmap);
    277                 }
    278             });
    279         }
    280     }).start();
    281 }
    282 </pre>
    283 
    284 <p>{@link android.widget.ImageView}  UI 
    285 </p>
    286 
    287 <p>
    288    {@link android.os.Handler} UI 
    289 
    290 {@link android.os.AsyncTask}  UI  
    291 </p>
    292 
    293 
    294 <h4 id="AsyncTask">AsyncTask </h4>
    295 
    296 <p>{@link android.os.AsyncTask}  
    297   UI 
    298 </p>
    299 
    300 <p>{@link android.os.AsyncTask}   {@link
    301 android.os.AsyncTask#doInBackground doInBackground()}  
    302 UI {@link
    303 android.os.AsyncTask#onPostExecute onPostExecute()}  {@link
    304 android.os.AsyncTask#doInBackground doInBackground()} UI UI UI  {@link android.os.AsyncTask#execute execute()} 
    305 
    306 </p>
    307 
    308 <p> {@link android.os.AsyncTask} 
    309 </p>
    310 
    311 <pre>
    312 public void onClick(View v) {
    313     new DownloadImageTask().execute("http://example.com/image.png");
    314 }
    315 
    316 private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
    317     /** The system calls this to perform work in a worker thread and
    318       * delivers it the parameters given to AsyncTask.execute() */
    319     protected Bitmap doInBackground(String... urls) {
    320         return loadImageFromNetwork(urls[0]);
    321     }
    322     
    323     /** The system calls this to perform work in the UI thread and delivers
    324       * the result from doInBackground() */
    325     protected void onPostExecute(Bitmap result) {
    326         mImageView.setImageBitmap(result);
    327     }
    328 }
    329 </pre>
    330 
    331 <p> UI UI 
    332 </p>
    333 
    334 <p> {@link android.os.AsyncTask} 
    335 </p>
    336 
    337 <ul>
    338 <li>
    339 </li>
    340 <li>{@link android.os.AsyncTask#doInBackground doInBackground()}  
    341 </li>
    342 <li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}{@link
    343 android.os.AsyncTask#onPostExecute onPostExecute()}{@link
    344 android.os.AsyncTask#onProgressUpdate onProgressUpdate()} UI </li>
    345 <li>{@link android.os.AsyncTask#doInBackground doInBackground()} {@link android.os.AsyncTask#onPostExecute onPostExecute()} 
    346 </li>
    347 <li>{@link android.os.AsyncTask#publishProgress publishProgress()} {@link
    348 android.os.AsyncTask#doInBackground doInBackground()} UI  {@link
    349 android.os.AsyncTask#onProgressUpdate onProgressUpdate()} </li>
    350 <li></li>
    351 </ul>
    352 
    353 <p class="caution"><strong>:</strong>   1 <a href="{@docRoot}guide/topics/resources/runtime-changes.html"></a> 
    354 
    355 <a href="http://code.google.com/p/shelves/">Shelves</a>   
    356 
    357 </p>
    358 
    359 
    360 <h3 id="ThreadSafe"> </h3>
    361 
    362 <p> 
    363  </p>
    364 
    365 <p><a href="{@docRoot}guide/components/bound-services.html"></a>&mdash;{@link android.os.IBinder} {@link android.os.IBinder IBinder}  {@link android.os.IBinder
    366 IBinder}  UI 
    367 
    368 
    369 
    370  {@link android.app.Service#onBind onBind()}  UI {@link android.app.Service#onBind
    371 onBind()} RPC 
    372 
    373 
    374   {@link android.os.IBinder IBinder} {@link android.os.IBinder
    375 IBinder} 
    376 </p>
    377 
    378 <p>  {@link android.content.ContentResolver}  {@link android.content.ContentProvider}  {@link
    379 android.content.ContentProvider} {@link
    380 android.content.ContentProvider#query query()} {@link android.content.ContentProvider#insert
    381 insert()}{@link android.content.ContentProvider#delete delete()}{@link
    382 android.content.ContentProvider#update update()}{@link android.content.ContentProvider#getType
    383 getType()} UI  
    384 
    385 
    386 &mdash;&mdash;
    387  </p>
    388 
    389 
    390 <h2 id="IPC">IPC</h2>
    391 
    392 <p>Android   RPC 
    393 
    394 
    395    
    396 
    397 
    398 Android  IPC  RPC  
    399  </p>
    400 
    401 <p>IPC  {@link
    402 android.content.Context#bindService bindService()}  <a href="{@docRoot}guide/components/services.html"></a></p>
    403 
    404 
    405 <!--
    406 <h2>Beginner's Path</h2>
    407 
    408 <p>For information about how to perform work in the background for an indefinite period of time
    409 (without a user interface), continue with the <b><a
    410 href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
    411 -->
    412