设为首页 加入收藏

TOP

ContentProvider和ContentResolver的使用(二)
2019-09-01 23:13:36 】 浏览:56
Tags:ContentProvider ContentResolver 使用
sor.item/name"); nameva lues.put("contact_id", contact_id); getContentResolver().insert(uriInsert, nameva lues);

 

2.监听ContentProvider中数据的变化

在ContentProvider 发生数据变化时调用getContentResolver().notifyChange(uri, null)来通知注册在此URI上的访问者。

当数据放生变化时会调用ContentObserver的onChange()来进行一系列的后续操作~~~

如下: 

 

public class MainActivity extends Activity {

    private Uri uri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //注册
        uri = Uri.parse("content://com.example.contentp.AccountProvider"); 
        getContentResolver().registerContentObserver(uri, true, new MyObserver(new Handler())) 
}
}

//监听到变化后调用onChange()来执行一系列操作

private class MyObserver extends ContentObserver {
    Uri uri = Uri.parse("content://com.example.contentp.AccountProvider"); 

public MyObserver(Handler handler) {

super(handler);
}
@Override
public void onChange(boolean selfChange) {
Cursor cursor = getContentResolver().query(uri, new String[]{"file","mime_type","date"}, null, null, null);
while(cursor.moveToNext()){
//执行一些操作
}
}
}

 

ContentProviderClient 

与ContentResolver一样都是用来对ContentProvider中的数据进行添加、删除、修改和查询操作的

通过调用 getContentResolver().acquireContentProviderClient(authority) 方法获取 ContentProviderClient对象。

用法跟ContentResolver相似,不同点是ContentProviderClient 对象必须在结束使用后,调用ContentProviderClient.release()来释放。这会是系统释放对应的ContentProvider对象。

对于相同ContentProvider 的多次调用,推荐使用ContentProviderClient。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android之Fragment详解(非原创) 下一篇java.lang.UnsatisfiedLinkError:..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目