Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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 通知ContentProvider内部的更改:在Loaders透视图中它是线程安全的吗?_Android_Multithreading_Android Contentprovider_Android Loader - Fatal编程技术网

Android 通知ContentProvider内部的更改:在Loaders透视图中它是线程安全的吗?

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

我有一个由SQLiteDatabase备份的ContentProvider,它有一个相当常见的实现,即:

class MyContentProvider extends ContentProvider {
    public void update(...) {
        // write stuff to DB
        //...
        // done writing stuff

        getContentResolver().notifyChange(uri,null);
    }
}
我还使用
CursorLoader
执行查询,并在adapter/listview中显示其结果

我的ContentProvider中没有执行线程同步

我不太清楚在以下情况下会发生什么:

  • 我启动一些自定义的非ui线程,并调用
    update()
    来更改该线程中DB中的一些值
  • update()
    导致调用
    notifyChange(…)
  • My
    CursorLoader
    拾取此更改并更新适配器,该适配器将更新
    ListView
  • 从线程安全的角度来看,上述场景可以吗?我的意思是,看,值是使用一个线程(非ui)编写的,然后同一个线程通知更改,最后更改由
    CursorLoader
    拾取,我怀疑它使用其他后台线程加载数据


    我需要做一些手动线程同步,还是只工作?(安卓可能已经对所有这些东西都很聪明了)

    也请阅读Vogella 5.4。是的,我已经读了所有这些。我主要感兴趣的是,notifyChange()是否会导致在加载程序拾取它之前发生一些同步。如果是的话,我就不用担心了。如果没有,那么我需要小心:)在这个注释中,注意notifyChange是线程安全的:。但是SDK文档没有提到它。。。