我想用Android backup service备份我的应用程序的数据,但是我担心网络的使用。我有大约500 of的数据,需要上传到每个备份操作。不是很多,但是如果每天执行10次备份,它可以轻松地达到5MB。
我的问题是,Android决定何时以及多久一次执行备份?在我调用dataChanged()之后,文档只提到了“在将来的适当时机”。它不能解释什么条件构成了“适当的时机”。
您可以通过调用
dataChanged()在任何时候请求备份操作。此方法通知备份管理器,您希望使用备份代理备份数据。然后,备份管理器将在将来适当的时候调用备份代理的onBackup()方法。
发布于 2015-01-03 04:48:25
你的问题分为两部分:
让我们从#2,多久一次开始。我认为这些文档足以回答这个问题。当应用程序调用dataChanged()方法时,就有可能进行备份。因此,谨慎的做法是限制对此方法的调用频率。如何处理这件事由你自己决定。您可能需要考虑的一种方法是,只将其称为应用程序中的重要/重要数据更改。也就是说,不要为用户首选项的更改(例如背景色)调用它,而是对任何类型的事务性数据调用它。
至于#1,when:这很难准确回答。这方面的文档是不明确的。这让Android可以自由地改变这个算法,而不会违反任何开发者的期望。我确实认为这样做是合理的:备份可能会很快发生,可能在最短的时间内是合适的。如果“很快”发生,那就不是一种很有用的服务了,是吗?Android可能等待一些简单的条件(只是猜测,但这可能是可用的线程,没有其他网络活动的可用网络连接)。请注意,文档声明“它将使用设备上启用的任何传输进行备份”。这听起来好像是为了让备份尽早发生。
发布于 2016-02-11 23:06:23
我进一步研究了Android备份管理器服务,并发现了以下内容:
我的解释是,我们的应用程序中的每个DataChanged()调用都通过传输通知备份管理器服务。备份管理器服务将只对我们的应用程序的备份代理的onBackup()执行一次调用,即使在备份管理器服务需要响应之前,DataChanged被多次调用(参见下面关于备份管理器响应频率的第2项)。
https://stackoverflow.com/questions/15049004
复制相似问题