我想使用Android backup service备份我的应用数据,但我担心网络使用情况。我有大约500KB的数据需要为每个备份操作上传。不多,但如果备份每天执行10次,它可以轻松达到5MB。
我的问题是,Android何时以及多久决定执行一次备份?在我致电dataChanged()
之后,该文档仅提及“在未来的适当时机”。它没有解释什么条件构成了“适当时机”。
您可以随时通过致电请求备份操作
dataChanged()
。此方法通知备份管理器您想要的 使用备份代理备份数据。然后是备份管理器 在适当的时候调用您的备份代理的onBackup()
方法 未来。
答案 0 :(得分:13)
您的问题分为两部分:
让我们从#2开始,多久。我认为文档足以回答这个问题。只要您的应用调用dataChanged()
方法,就有可能进行备份。因此,谨慎地限制对此方法的调用频率。由你决定如何处理这个问题。您可能想要考虑的一种方法是仅针对应用中的重要/重要数据更改调用此方法。也就是说,不要将其称为用户首选项的更改(例如背景颜色),而是将其调用以用于任何类型的事务数据。
对于#1,何时:这很难准确回答。文档对此不置可否。这使得Android可以自由地更改此算法,而不会违反任何开发人员的期望。我认为假设以下内容是合理的:备份可能很快发生,可能是在最短的时间条件下。如果它没有“很快”发生,那么它将不是一个非常有用的服务,不是吗? Android可能会有一些简单的条件(只是一个猜测,但这可能是可用的线程,没有其他网络活动的可用网络连接)。请注意,文档说明“它将使用设备上启用的任何传输进行备份”。听起来它的目的是让备份尽早发生。
答案 1 :(得分:2)
我已经进一步研究Android备份管理器服务并发现了以下内容:
我解释这一点,因为我们的应用程序中的每个DataChanged()调用都通过传输通知备份管理器服务。即使在备份管理器服务响应之前多次调用DataChanged,备份管理器服务也只会对我们的应用程序备份代理的onBackup()执行一次调用(请参阅下面有关备份的第2项)经理回应频率)。