15

Androidバックアップサービスを使用してアプリのデータをバックアップしたいのですが、ネットワークの使用が心配です。バックアップ操作ごとにアップロードする必要のあるデータが約500KBあります。それほど多くはありませんが、バックアップを1日に10回実行すると、簡単に5MBに達する可能性があります。

私の質問は、Androidがいつ、どのくらいの頻度でバックアップを実行することを決定するかということです。ドキュメントには、電話をかけた後の「将来の適切な時期」についてのみ記載されていますdataChanged()。どのような条件が「適切な時間」を構成するかについては説明していません。

を呼び出すことにより、いつでもバックアップ操作を要求できます dataChanged()。このメソッドは、バックアップエージェントを使用してデータをバックアップすることをバックアップマネージャーに通知します。次に、バックアップマネージャはonBackup()、将来の適切なタイミングでバックアップエージェントのメソッドを呼び出します。

4

2 に答える 2

13

あなたの質問には2つの部分があります:

  1. いつ
  2. どのくらいの頻度で

#2から始めましょう、どのくらいの頻度で。ドキュメントはこれに十分に答えていると思います。アプリがメソッドを呼び出すときはいつでもdataChanged()、バックアップの可能性があります。したがって、このメソッドの呼び出しの頻度を制限するのが賢明です。これをどのように処理するかはあなた次第です。アプリの重要な/重要なデータ変更に対してのみこれを呼び出すことを検討する必要がある1つのアプローチ。つまり、ユーザー設定(背景色など)の変更のために呼び出すのではなく、あらゆる種類のトランザクションデータのために呼び出します。

#1に関しては、次の場合:正確に答えるのは難しいです。ドキュメントはこれについて非コミットです。これにより、Androidは、開発者の期待に違反することなく、このアルゴリズムを自由に変更できます。次のことを想定するのは合理的だと思います。バックアップは迅速に行われる可能性が高く、おそらく最も早い時期に条件が適切になります。それが「すぐに」起こらなければ、それはあまり有用なサービスではないでしょう?Androidが待機するいくつかの単純な条件がおそらくあります(単なる推測ですが、これは利用可能なスレッド、他のネットワークアクティビティのない利用可能なネットワーク接続である可能性があります)。ドキュメントには、「デバイスで有効になっているトランスポートを使用してバックアップされる」と記載されていることに注意してください。"。それは、バックアップをできるだけ早く実行するように設計されているようです。

于 2015-01-03T04:48:25.223 に答える
2

Android Backup Manager Serviceの調査についてさらに詳しく調べたところ、次のことがわかりました。

  1. http://developer.android.com/guide/topics/data/backup.htmlの「RequestingBackupSection 」によると、「 dataChanged()を連続して数回呼び出すと、バックアップマネージャがエージェントにバックアップを要求する前に、エージェントは、onBackup()への呼び出しを1回だけ受け取ります。」

これは、アプリ内の各DataChanged()呼び出しがトランスポートを介してBackupManagerサービスに通知するものと解釈します。Backup Manager Serviceは、必要なときにBackup Manager Serviceが応答する前にDataChangedが数回呼び出された場合でも、アプリのBackup AgentのonBackup()に対して1回の呼び出しのみを実行します(Backup Managerの応答頻度については以下の項目2を参照してください)。

  1. このテスターに​​よると(私は今バックアップ頻度テストも実行しました):https ://advancedweb.hu/2014/12/09/practical_measurement_of_the_android_backup_manager/ バックアップマネージャーサービスは1時間ごとに応答します(これもテストで証明しました)。最後のデータバックアップから1時間の間に少なくとも1つのDataChanged()が呼び出されたため。
于 2016-02-11T23:06:23.420 に答える