Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么同步适配器赢了';如果android存储空间耗尽,则无法工作_Android_Synchronization_Android Contentprovider_Android Syncadapter - Fatal编程技术网

为什么同步适配器赢了';如果android存储空间耗尽,则无法工作

为什么同步适配器赢了';如果android存储空间耗尽,则无法工作,android,synchronization,android-contentprovider,android-syncadapter,Android,Synchronization,Android Contentprovider,Android Syncadapter,在我的android应用程序中,我使用同步适配器配置了一个定期同步,除了android存储空间耗尽外,它工作正常。如果我删除了一些文件并释放了空间,那么同步将开始工作。实际上,我只是将数据从我的设备同步到远程服务器,因此,同步时设备中不需要额外的空间。那么为什么android同步适配器需要一些空间才能工作。我注意到,即使设备中有2%的可用内存,同步适配器也无法工作。同样,我发现,如果使用98%的设备内存,android设备中的gmail应用程序也无法工作。gmail将显示“无法同步”消息,并且如

在我的android应用程序中,我使用同步适配器配置了一个定期同步,除了android存储空间耗尽外,它工作正常。如果我删除了一些文件并释放了空间,那么同步将开始工作。实际上,我只是将数据从我的设备同步到远程服务器,因此,同步时设备中不需要额外的空间。那么为什么android同步适配器需要一些空间才能工作。我注意到,即使设备中有2%的可用内存,同步适配器也无法工作。同样,我发现,如果使用98%的设备内存,android设备中的gmail应用程序也无法工作。gmail将显示“无法同步”消息,并且如果设备内存已满,将不会同步和接收任何消息。因此,如果内存已满,是否有方法启动同步适配器?如果没有,我如何通知我的应用程序用户这一事实?

这是标准的AOSP/Android行为

  • SyncManager侦听在设备存储和存储空间不足时发送的意图

  • 它还侦听意图,以发现存储已恢复正常并正常运行

  • 它之所以这样做,可能是因为它是由SyncStorageEngine备份的,SyncStorageEngine在中存储各种信息


    虽然这个回答很晚,但如果你想通知你的用户,在Android Oreo和更低版本上,你可以收听相同的广播并通知他们。从Android Oreo开始,它变得有点棘手,因为建议使用Context.getCacheDir()来管理缓存空间。有关更多详细信息,请参阅

    ,这可能是一种故意限制,以确保同步不会占用太多资源并破坏操作系统的稳定性,或者同步可能实际上(出于任何原因)需要在同步时缓存到卡上。当你空间不足时,Android会给你一条信息说“有些东西可能无法工作”,那么,我将使用前者。好的。那么,我如何才能通知我的应用程序用户,由于这个原因,在我的应用程序中不会执行同步呢???@Carcigenicate我在谷歌上搜索过这个限制,并且在基于同步适配器的任何链接中都没有提到它。但在“存储已满”事件中,有一个侦听器,并在触发时发送通知。@Carcigenicate我如何在我的应用程序中执行此操作?您是否可以显示/引用一些太晚无法回答的示例,但我对此表示感谢,因为如果这是解决问题的方法,它将帮助其他人。谢谢。。。。。。。