私はアプリケーションを開発していますが、同じユーザーデバイス間でお気に入り、ブックマークなどを共有できる機能を実装したいと思います。だから、iCloudのようなものを実現したい。
私は2つの考えられるアイデアに出くわしました:バックアップマネージャーとGoogleドライブ。Backup Managerは最も単純なソリューションであり、私のニーズに合うと思いますが、間違っているかもしれません。
注:バックアップサービスは、アプリケーションデータを他のクライアントと同期したり、通常のアプリケーションライフサイクル中にアクセスしたいデータを保存したりするようには設計されていません。バックアップデータをオンデマンドで読み書きしたり、バックアップマネージャーが提供するAPI以外の方法でデータにアクセスしたりすることはできません。
注:Android Backup Serviceが提供するバックアップトランスポートは、バックアップをサポートするすべてのAndroid搭載デバイスで利用できるとは限りません。一部のデバイスは別のトランスポートを使用したバックアップをサポートしている場合があり、一部のデバイスはバックアップをまったくサポートしていない場合があり、アプリケーションがデバイスで使用されているトランスポートを知る方法がありません。
この情報をSharedPreferencesに保存しているので、Googleのアドバイスに従ってBackupAgentHelperを拡張することから実装を開始しました( http://developer.android.com/guide/topics/data/backup.html#BackupAgentHelper)。
...ユーザーがデータを変更するたびに、アプリはdataChanged()を呼び出す必要があります。これにより、バックアップマネージャーキューにバックアップリクエストが追加されます。
したがって、データを変更するたびに、たとえばブックマークを保存または削除すると、次のように呼び出します。
BackupManager.dataChanged(C.PROJECT_PATH);
アプリケーションが起動したら、次のように呼び出します。
contentBackupManager.requestRestore(new RestoreObserver() {})
すべてがセットアップされ、AndroidManifest.xmlも設定されています。
残念ながら、requestRestoreは!= 0(エラー)を返し、私のBackupAngent(BackupAgentHelperを拡張)onBackupとonRestoreが呼び出されていません(onCreateが呼び出されています)。しかし、もう一度:
バックアップ要求によって、onBackup()メソッドがすぐに呼び出されることはありません。代わりに、バックアップマネージャは適切な時間待機してから、最後のバックアップが実行されてからバックアップを要求したすべてのアプリケーションのバックアップを実行します。
これは、自分の答えがGoogleドライブでしか見つからないことを意味しますか?