Android 通知ContentProvider内部的更改:在Loaders透视图中它是线程安全的吗?
我有一个由SQLiteDatabase备份的ContentProvider,它有一个相当常见的实现,即:Android 通知ContentProvider内部的更改:在Loaders透视图中它是线程安全的吗?,android,multithreading,android-contentprovider,android-loader,Android,Multithreading,Android Contentprovider,Android Loader,我有一个由SQLiteDatabase备份的ContentProvider,它有一个相当常见的实现,即: class MyContentProvider extends ContentProvider { public void update(...) { // write stuff to DB //... // done writing stuff getContentResolver().notifyChange(u
class MyContentProvider extends ContentProvider {
public void update(...) {
// write stuff to DB
//...
// done writing stuff
getContentResolver().notifyChange(uri,null);
}
}
我还使用CursorLoader
执行查询,并在adapter/listview中显示其结果
我的ContentProvider中没有执行线程同步
我不太清楚在以下情况下会发生什么:
update()
来更改该线程中DB中的一些值update()
导致调用notifyChange(…)
CursorLoader
拾取此更改并更新适配器,该适配器将更新ListView
CursorLoader
拾取,我怀疑它使用其他后台线程加载数据
我需要做一些手动线程同步,还是只工作?(安卓可能已经对所有这些东西都很聪明了)也请阅读Vogella 5.4。是的,我已经读了所有这些。我主要感兴趣的是,notifyChange()是否会导致在加载程序拾取它之前发生一些同步。如果是的话,我就不用担心了。如果没有,那么我需要小心:)在这个注释中,注意notifyChange是线程安全的:。但是SDK文档没有提到它。。。