Android备份服务 - 备份的时间和频率?

时间:2013-02-24 05:34:54

标签: android android-backup-service

我想使用Android backup service备份我的应用数据,但我担心网络使用情况。我有大约500KB的数据需要为每个备份操作上传。不多,但如果备份每天执行10次,它可以轻松达到5MB。

我的问题是,Android何时以及多久决定执行一次备份?在我致电dataChanged()之后,该文档仅提及“在未来的适当时机”。它没有解释什么条件构成了“适当时机”。

  

您可以随时通过致电请求备份操作   dataChanged()。此方法通知备份管理器您想要的   使用备份代理备份数据。然后是备份管理器   在适当的时候调用您的备份代理的onBackup()方法   未来。

2 个答案:

答案 0 :(得分:13)

您的问题分为两部分:

  1. 多久
  2. 让我们从#2开始,多久。我认为文档足以回答这个问题。只要您的应用调用dataChanged()方法,就有可能进行备份。因此,谨慎地限制对此方法的调用频率。由你决定如何处理这个问题。您可能想要考虑的一种方法是仅针对应用中的重要/重要数据更改调用此方法。也就是说,不要将其称为用户首选项的更改(例如背景颜色),而是将其调用以用于任何类型的事务数据。

    对于#1,何时:这很难准确回答。文档对此不置可否。这使得Android可以自由地更改此算法,而不会违反任何开发人员的期望。我认为假设以下内容是合理的:备份可能很快发生,可能是在最短的时间条件下。如果它没有“很快”发生,那么它将不是一个非常有用的服务,不是吗? Android可能会有一些简单的条件(只是一个猜测,但这可能是可用的线程,没有其他网络活动的可用网络连接)。请注意,文档说明“它将使用设备上启用的任何传输进行备份”。听起来它的目的是让备份尽早发生。

答案 1 :(得分:2)

我已经进一步研究Android备份管理器服务并发现了以下内容:

  1. 根据"请求备份部分"在http://developer.android.com/guide/topics/data/backup.html "如果您连续多次调用dataChanged(),在备份管理器从您的代理请求备份之前,您的代理仍然只会收到一次对onBackup()的调用。"
  2. 我解释这一点,因为我们的应用程序中的每个DataChanged()调用都通过传输通知备份管理器服务。即使在备份管理器服务响应之前多次调用DataChanged,备份管理器服务也只会对我们的应用程序备份代理的onBackup()执行一次调用(请参阅下面有关备份的第2项)经理回应频率)。

    1. 根据此测试人员(我刚刚进行了备用频率测试):https://advancedweb.hu/2014/12/09/practical_measurement_of_the_android_backup_manager/ 备份管理器服务每小时响应一次(我在测试中也证明了这一点),只要在上次数据备份后的一小时内调用至少一个DataChanged()。