「Androidアプリのバックグラウンド処理」の版間の差分
提供: Java入門
(ページの作成:「Androidアプリには、バックグランド処理を実現する方法がいくつかあります。Thread, AsyncTask, Service, BroadcastReceiver などです。 '''...」) |
(相違点なし)
|
2015年9月6日 (日) 18:40時点における最新版
Androidアプリには、バックグランド処理を実現する方法がいくつかあります。Thread, AsyncTask, Service, BroadcastReceiver などです。
読み方
- Thread
- すれっど
- AsyncTask
- あしんく たすく
- Service
- さーびす
- BroadcastReceiver
- ぶろーどきゃすと れしーばー
概要
Androidアプリでは、以下のバックグランド処理があります。
- Thread
- スレッド
- AsyncTask
- 非同期タスク
- Service
- サービス
- BroadcastReceiver
- レシーバ
Thread
Thread(スレッド)は、単なるスレッドです。Threadは、直接 UI にアクセス(変更)できません。UIは、単一のスレッド管理しているため、デレゲートの処理が必要になります。
ソースコード
AsyncTask
AsyncTaskは、スレッドを利用したバックグランド処理を実現します。 AsyncTaskは、UIスレッドに適切で簡単な利用を実現します。AsyncTaskクラスは、バックグラウンド処理や Thread や Handler の操作なしに UIスレッドへ結果を出すことができます。
AsyncTaskは、 Thread や Handler などのクラスのヘルパークラスとしてデザインされています。汎用のスレッディングフレームワークの構成する必要はありません。 AsyncTask は、理想的には、短いオペレーション(せいぜい数秒のタスク)のためだけに使われるべきです。もし、長い期間のスレッドの実行を必要とする場合は、 Executor, ThreadPoolExecutor や FutureTask などの java.util.concurrent パッケージ で提供される様々なAPIの利用を強く推奨します。
以下のコードは、developer.android.com からの引用です。
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { protected Long doInBackground(URL... urls) { int count = urls.length; long totalSize = 0; for (int i = 0; i < count; i++) { totalSize += Downloader.downloadFile(urls[i]); publishProgress((int) ((i / (float) count) * 100)); // Escape early if cancel() is called if (isCancelled()) break; } return totalSize; } protected void onProgressUpdate(Integer... progress) { setProgressPercent(progress[0]); } protected void onPostExecute(Long result) { showDialog("Downloaded " + result + " bytes"); } }
以下のように利用できます。
new DownloadFilesTask().execute(url1, url2, url3);
Service
Android の Service