为什么要备份?——在android,写入文件,立刻关机,这刚写的文件,出错时,不但最后一次写数据失败,可能就是文件破坏了,无法再读。于是想到在给这文件加个备份文件,在文件写入后的40秒,执行备份。备份文件名是原文件名加上“.bak”。
写入和备份之间间隔是40秒。
有些文件写入频率非常频繁,像health20xxxxxx.dat,基本5秒就会写一次。如此下来,不可能等到40秒没写操作,按规则的话,等不到会有备份。为此给了两种备份策略。
第一种:固定延迟触发备份(适用于高写入频率场景)(backup_on_fixed_delay,值0)
自首次写入起,固定延迟40秒后执行备份,期间无论是否有新写入,均不重置计时器。该策略确保备份在预设时间点执行,避免因持续写入导致备份被无限推迟,适合写入频繁、需要及时落盘保护的场景。
此种策略下,无法保证关机时,原文本和备份文件同时不被破坏。
使用此策略文件:health20xxxxxx.dat、logs.pb
第二种:静默期触发备份(适用于低写入频率场景)(backup_on_idle,值1)
在最后一次写入操作完成后,进入40秒的静默等待期。若期间无任何新写入,则期满后执行备份;若有新写入,则重置计时器,重新开始40秒静默等待。该策略旨在避免高频短暂写入引发的频繁备份,适合写入间隔较长、突发写入较少的场景。
此种策略下,因为有40秒间隔,基本能保证关机时,原文件和备份文件有一个不破坏。
使用此策略文件:preferences、klink.pb