8

Android Backup API が正確に何のために使用されているかを説明できる人はいますか?

開発者向けドキュメントのUsing the Backup APIData Backupを読みましたが、まだよくわかりません。

データはいつバックアップおよび復元されますか?

具体的には、次の状況で:

  1. ユーザーがデバイス 1 にアプリをインストールし、データがバックアップされた後、ユーザーはデバイス 2 にアプリをインストールします。デバイス 1 のユーザー データは自動的にデバイス 2 に保存されますか? その場合、これはアプリのインストール時または起動時に発生しますか?

  2. 私のアプリは 2 台のデバイスにインストールされています。デバイス 1 で変更が行われると、デバイス 2 で自動的に行われますか? そうでない場合、少なくともデバイス 2 で変更を行うことは可能ですか?

あるドキュメントでは、

バックアップ サービスは、アプリケーション データを他のクライアントと同期したり、通常のアプリケーション ライフサイクル中にアクセスしたいデータを保存したりするようには設計されていません。オンデマンドでバックアップ データを読み書きすることはできず、バックアップ マネージャが提供する API 以外の方法でバックアップ データにアクセスすることはできません。

しかし、別のところで、

Android フレームワークは、データをリモート Web サービスに同期する豊富なクラウド対応アプリを構築するのに役立ち、すべてのデバイスが常に同期されていることを確認します

これは私には矛盾しているように思えます。

具体的には、デバイス間で 1 つのデータベース ファイル (20 KB 未満) を継続的に同期したいと考えています。これは Backup API で可能ですか?

4

2 に答える 2

3

編集:あなたの質問に答えるために-いいえ、データを同期する信頼できる方法ではありません。

ユーザーが新しいデバイスを購入したり、既存のデバイスをリセットしたりする場合、初期セットアップ中に Google Play がアプリをデバイスに復元すると、アプリに関連付けられていた以前のデータも復元されることを期待する可能性があります。デフォルトでは、これは行われず、アプリでのユーザーの成果や設定はすべて失われます。

ご覧のとおり、アプリはデータをクラウドに保存しています。ファイルをバックアップ サーバーにプッシュし、API キー (各ユーザーの Google アカウントに固有) を使用すると、バックアップを他のデバイスにダウンロードできますが、アプリのインストール中または手動でリクエストを行うことによってのみアクセスできます。ドキュメントには次のように記載されています。

バックアップ サービスは、アプリケーション データを他のクライアントと同期したり、アプリケーションのライフサイクル中にランダムにアクセスしたいデータを保存したりするようには設計されていません。

私が理解しているように(これを自分で実装していない限り)、これをクラウド同期リアルタイムデータの信頼できる方法として使用することはできません.

マニフェストはおそらくデータの処理を開始し、バックアップをプッシュするかどうかを決定します。

将来のある時点で、バックアップ マネージャはバックアップ エージェントの onBackup() メソッドを呼び出します。

バックアップの復元は手動ではありません:

アプリケーションがデバイスにインストールされると自動的に復元が行われるため、通常、手動で復元を要求する必要はありません。ただし、手動復元をトリガーする必要がある場合は、requestRestore() メソッドを呼び出すだけです。

于 2013-01-13T01:25:08.147 に答える
3

ため息、ドキュメントはどこにも「同期」と言ってはいけません。それを修正するためにいくつかのパッチを提出する必要があります。:) このメカニズムは、2 つのデバイス間のデータ交換を提供することを意図したものではありません。

Android のバックアップ インフラストラクチャの主な目的は、スマートフォンと一緒にタブレットを購入したときや、デバイスを落として壊れてセットアップしたときなど、ユーザーが新しいデバイスをセットアップするときに優れたエクスペリエンスを提供することです。交換品。新たにセットアップされたデバイスは、すべて同じアプリとそのデータが無傷で、該当する場合は同じ壁紙画像など、使い慣れた状態にあるという考え方です。

デバイス間でリアルタイムにデータの同期を維持することが、Sync Manager 機能の目的です。

于 2016-01-08T21:02:06.800 に答える