在我的Android应用程序中,我已使用同步适配器配置了定期同步,并且其工作正常,除非android存储空间已用完。如果我删除了一些文件并释放空间,则同步将开始工作。实际上我是只是将数据从我的设备同步到远程服务器,因此在同步时设备中不需要额外的空间。所以为什么android同步适配器需要一些空间才能工作。我注意到即使同步适配器也无法工作设备中有2%的可用内存。我发现如果使用98%的设备内存,Android设备中的gmail应用程序也将无法工作.Gmail将显示无法同步的消息,并且不会同步和如果设备内存已满,则会收到任何消息。如果内存已满,有没有办法启动同步适配器?如果没有,那么我如何通知我的应用程序用户这个事实?
答案 0 :(得分:1)
这是标准的AOSP / Android行为。
当设备存储空间不足和Intent.ACTION_DEVICE_STORAGE_LOW
时,SyncManager会监听发送的cancels any active syncs意图。它还侦听Intent.ACTION_DEVICE_STORAGE_OK的意图,以便发现存储已恢复正常并且reschedules the syncs
之所以这样做,可能是因为它由SyncStorageEngine备份,该存储将各种信息存储在XML files
中。尽管这个答案很晚,但是如果您想通知用户,则在Android Oreo及更低版本上,您可以收听相同的广播并通知他们。从Android Oreo开始,它变得有些棘手,因为建议使用Context.getCacheDir()来管理缓存空间。有关更多详细信息,请参见this answer