注: ほとんどのバックグラウンド処理のユースケースで、推奨ソリューションとして WorkManager をおすすめします。最適なソリューションについては、バックグラウンド処理ガイドをご覧ください。
Android デバイスとウェブサーバー間でデータを同期すると、アプリの有用性と魅力が大幅に高まります。たとえば、ウェブサーバーにデータを転送すると、有用なバックアップになり、サーバーからデータを転送すると、デバイスがオフラインのときでもデータを利用できます。ウェブ インターフェースでデータの入力や編集をした後、そのデータをデバイスで利用する方が簡単な場合もあります。また、長期にわたってデータを収集し、中央のストレージ領域にアップロードしたい場合もあります。
アプリ内でデータ転送を行う独自のシステムを設計することもできますが、Android の同期アダプター フレームワークの使用を検討する必要があります。このフレームワークは、データ転送の管理と自動化に役立ち、さまざまなアプリ間の同期オペレーションを調整します。このフレームワークを使用すると、自身で設計したデータ転送スキームでは利用できない機能を利用できるようになります。
- プラグイン アーキテクチャ
- 呼び出し可能コンポーネントの形式でデータ転送コードをシステムに追加できます。
- 自動実行
- データの変更、経過時間、時間帯などのさまざまな条件に基づいてデータ転送を自動化できます。また、実行できない転送はキューに追加され、可能であれば実行されます。
- 自動ネットワーク チェック
- デバイスがネットワークに接続されている場合にのみ、データ転送が実行されます。
- バッテリー性能の向上
- アプリのデータ転送タスクをすべて 1 か所に集約し、すべてのタスクを同時に実行できます。データ転送も、他のアプリからのデータ転送と連動してスケジュールされます。これらの要因により、システムがネットワークをオンにする回数が減少し、バッテリー使用量が減少します。
- アカウント管理と認証
- アプリでユーザー認証情報やサーバー ログインが必要な場合は、必要に応じてアカウント管理と認証をデータ転送に統合できます。
このクラスでは、同期アダプターとそれをラップするバインドされた Service
を作成する方法、同期アダプターをフレームワークに接続するための他のコンポーネントを提供する方法、同期アダプターを実行してさまざまな方法で実行する方法について説明します。
注: 同期アダプターは非同期的に実行されるため、データを即時にではなく定期的かつ効率的に転送することを想定して使用する必要があります。リアルタイムでデータ転送を行う必要がある場合は、AsyncTask
または IntentService
で実行する必要があります。
レッスン
- スタブ認証システムを作成する
- 同期アダプター フレームワークがアプリの一部であると想定しているアカウント処理コンポーネントを追加する方法を学習します。このレッスンでは、シンプルにするためにスタブ認証コンポーネントを作成する方法について説明します。
- スタブ コンテンツ プロバイダを作成する
- 同期アダプター フレームワークがアプリの一部であると想定されるコンテンツ プロバイダ コンポーネントを追加する方法を学習します。このレッスンでは、アプリがコンテンツ プロバイダを使用しないことを前提としています。そのため、スタブ コンポーネントを追加する方法について説明します。アプリにコンテンツ プロバイダがすでに存在する場合は、このレッスンをスキップできます。
- 同期アダプターを作成する
- 同期アダプター フレームワークが自動的に実行できるコンポーネントにデータ転送コードをカプセル化する方法を学びます。
- 同期アダプターを実行する
- 同期アダプター フレームワークを使用してデータ転送をトリガーし、スケジュールする方法を学習します。