我通过调用ContentResolver.requestSync来启动我的Syncadapter,使用SwipeRefreshLayout的onRefresh方法触发与REST服务的同步。 然后,Syncadapter使用Volley的请求与服务器通信。
要检测同步操作的结束并关闭活动指示器,我在Fragment的SyncStatusObserver中使用ContentResolver.isSyncActive,我从中启动了同步。
问题是ContentResolver.isSyncActive在与服务器的实际同步结束之前返回false,导致活动指示器几乎立即消失。
我是否正确假设Volley的请求的异步性质导致SyncAdapter onPerformSync立即返回,这反过来又使ContentResolver认为同步已结束?
如果是,那么这里的正确/推荐解决方案是什么?我可以提出解决方法,但是想确保我没有遗漏一些明显的东西。
我已经查看了很多例子,包括iosched,swiperefresh,basicsyncadapter等,但他们似乎都在"持有"一切都结束之前的onPerformSync方法。
谢谢
答案 0 :(得分:0)
您应该在onPerformSync方法中同步执行请求。我使用Retrofit进行后端调用,但我认为Volley也应该提供同步功能。