监听ContentProvider的数据变化
2015-08-20 18:14
691 查看
(1)、应用场景:假设有A与B两个应用访问同一个应用,A应用在第三方应用中新增类一个内容。B应用需要立即将其读取出来,就要使用到监听技术。
(2)、需要在原来基础上创建一个新的应用叫App.
(3)、用户点击按钮添加一条数据,然后需要在原来的插入方法里面添加一个API,用于作出哪一个数据被改变的响应。
This.getContext().getContentResover().notifyChange(RUi,observer);第二个参数为数据变化的监听者,设为null,如果不设为null,则本应用必须得到监听者。
(4)、Other应用为B应用。在其中注册一个数据变化监听器。
源代码:
public void insert(View v){//onclick事件
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");//contentProvider的文件地址
ContentResolverresover=this.getContentResolver();//获取内容提供者操作对象
ContentValues values=newContentValues();
values.put("name","韩菱纱");
values.put("phone","45349635963");
values.put("amount","1000000");
resover.insert(uri, values);
}
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");
this.getContentResolver().registerContentObserver(uri, true, newPersonContentObserver(new Handler()));
}
publicclass PersonContentObserver extends ContentObserver {
publicPersonContentObserver(Handler handler) {
super(handler);
}
@Override
publicvoid onChange(boolean selfChange) {
//得到最近添加的那一条记录 select * from person order by persionid desclimit 1
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");
Cursorcursor=getContentResolver().query(uri, null, null, null, "persionid desclimit 1");
if(cursor.moveToFirst()){
Stringname=cursor.getString(cursor.getColumnIndex("name"));
Log.i(TAG,name);
}
}
(2)、需要在原来基础上创建一个新的应用叫App.
(3)、用户点击按钮添加一条数据,然后需要在原来的插入方法里面添加一个API,用于作出哪一个数据被改变的响应。
This.getContext().getContentResover().notifyChange(RUi,observer);第二个参数为数据变化的监听者,设为null,如果不设为null,则本应用必须得到监听者。
(4)、Other应用为B应用。在其中注册一个数据变化监听器。
源代码:
public void insert(View v){//onclick事件
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");//contentProvider的文件地址
ContentResolverresover=this.getContentResolver();//获取内容提供者操作对象
ContentValues values=newContentValues();
values.put("name","韩菱纱");
values.put("phone","45349635963");
values.put("amount","1000000");
resover.insert(uri, values);
}
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");
this.getContentResolver().registerContentObserver(uri, true, newPersonContentObserver(new Handler()));
}
publicclass PersonContentObserver extends ContentObserver {
publicPersonContentObserver(Handler handler) {
super(handler);
}
@Override
publicvoid onChange(boolean selfChange) {
//得到最近添加的那一条记录 select * from person order by persionid desclimit 1
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");
Cursorcursor=getContentResolver().query(uri, null, null, null, "persionid desclimit 1");
if(cursor.moveToFirst()){
Stringname=cursor.getString(cursor.getColumnIndex("name"));
Log.i(TAG,name);
}
}
相关文章推荐
- PHP:基于XML的在线小词典案例
- SFTP 服务的纠结
- XML
- php.2 php连接数据库实现增查
- php5.5以下版本配置opcache
- PHP PDO介绍
- php curl的几个例子
- php基础知识
- PHP会话处理相关函数介绍
- 使用PHP编写发红包程序
- 关于YII2.0配置的一点问题
- javscript上传图片前预览的方法setPreViewImage()
- server2008 ftp服务器搭建
- PHP中正则表达式学习及应用(一)
- codecademy-command line-inputoutput
- Web开发之PHP框架(一)-Laravel环境搭建
- ajax-php总结
- 虚拟化--002 powcli(图文)利用PowerCLI为ESXi_Cluster配置NTP服务器
- php cms 通用后台下载
- php加入xdebug后打开页面特别慢,不管是哪个页面