我们有一个AsyncTaskLoader,在函数loadInBackground
中我们查询内容提供商。
在返回查询时,我们从提供者处获得一个光标
现在,在此光标上,我们设置了ForceLoadContentObserver
,如下所示:
private final ForceLoadContentObserver mObserver = new ForceLoadContentObserver();
cursor.registerContentObserver(mObserver);
现在,当我们更改特定文件时,提供商已完成notifyChange
在正常情况下,这个notifyChange触发我的加载器的loadInBackground,然后重新查询提供者的新数据。
但在某些情况下,loadInBackground
不会触发notifyChange
。
原因: 当ContentProvider完成notifyChange时,在某个工作线程上调用我的加载器的loadInBackground。 在问题场景中,我的loadinBackground未完成,提供程序执行新的notifyChange。 似乎系统忽略了新的notifyChange。
可以解决这个问题的方法是什么?