目次
- 1この講座について
- 2イントロダクション
- 3前提知識
- 4この講座で学べること
- 5概要
- 6アプリの概観
- 7タスク:スターターコードのセットアップと概要
- 7.1ステップ1:スターターアプリをダウンロードして起動する
- 7.2ステップ2:コードを調べる
- 8概念:WorkManagerとは
- 9タスク:WorkMangerの依存関係を追加する
- 10タスク:バックグラウンドのworkerを作成する
- 10.1ステップ1:Workerを作成
- 10.2ステップ2:doWork()を実装する
- 11タスク:定期的なWorkRequestを定義する
- 11.1ステップ1:繰り返すタスクをセットアップ
- 11.2ステップ2:WorkManagerでWorkRequestをスケジューリングする
- 11.3Step 3: (任意) 最小の間隔でWorkRequestをスケジューリングする
- 12タスク:制約を追加する
- 12.1ステップ1:Constraints(制約)オブジェクトを追加し、制約を設定する
- 12.2ステップ2:アプリを起動してログを確認する
- 12.3ステップ3:さらに制約を追加する
- 13完成済みプロジェクト
- 14まとめ
この講座について
この記事はAndroid Kotlin基礎講座の一部です。これ以外のAndroid Kotlin基礎講座(全10回)も一緒に受講することでAndroidアプリの開発手法、およびKotlinの基礎知識を学ぶことができます。全講座はAndroid Kotlin基礎講座にリスト化されていますので参考にしてください。
またこの記事ではGoogle Developers Training teamによってGoogle Codelabsに公開されているAndroid Kotlin Fundamentals courseを日本語に翻訳しつつ、筆者の考察も交えながら発信しています。オリジナルのサイト(英文)はこちら。
イントロダクション
実世界のアプリの多くはバックグラウンドでのロングランニングタスクを実行する必要があります。例えば、サーバーにファイルをアップロードし、サーバーからのデータを同期し、それをRoomに保存し、サーバーにログを送ったり、データ上で負荷の高い操作を実行したりなどです。このような操作はバックグラウンドで、つまりUIスレッド(メインスレッド)以外で行われるべきです。バックグラウンドタスクはRAMやバッテリーのような端末の限られたリソースを消費します。これらは正しく行われないと、ユーザーに不快な思いをさせてしまうことにつながる可能性もあります。
この記事では、WorkManagerをつかってバックグラウンドタスクを適切に、効率よくスケジューリングする方法を学習します。Androidのバックグラウンド処理に対する他の手段について、より詳しくしりたいかたはGuide to background processing(英文)をご覧ください。
前提知識
- ViewModel、LiveDataおよびRoomなどのAndroidアーキテクチャコンポーネントの使い方
- LiveDataクラスでtransformationを行う方法
- コルーチンの作り方と起動方法
- データバインディングにおけるバインディングアダプターの使い方
- レポジトリーパターンを使ってキャッシュされたデータを読み込む方法
この講座で学べること
- 作業のユニットを表すWorkerの作り方
- 特定の作業が実行されるようにリクエストするためのWorkRequestの作り方
- Workerがいつ、どのように実行されるべきかを定義するためのconstraintsをWorkRequestに追加する方法
- WorkManagerを用いてバックグラウンドタスクをスケジューリングする方法
概要
- ネットワークからDevByte動画のプレイリストを事前に取得するバックグラウンドタスクを実行するためのWorkerの作成
- 定期的にworkerを実行させるようにスケジューリング
- WorkRequestにconstraintsを追加
- 一日一回定期的に実行されるWorkRequestをスケジューリング
プロフィール
大学卒業後SEに就職、現在は退職しフリーランスとして活動中。
『初心者でも挫折せずに一人でプログラミングを学べる』をモットーに、コードラボJPを開設
お問い合わせ等はcodelabsjp@gmail.comまで