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