进程之间SQL数据变化监听

前言:工作需要接触到了数据库观察者模式,ContentObserver我继续我以我上个SQL简介为例讲解进程之间数据改变通知与接收。

附件:http://blog.csdn.net/qq_34071798/article/details/53143354【SQL简介】

ContentObserver内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于数据库技术中的触发器(Trigger)ContentObserver所观察的Uri发生变化时,便会触发它。触发器分为表触发器、行触发器相应地ContentObserver也分为“ContentObserver”ContentObserver,当然这是与它所监听的Uri MIME Type有关的。

使用方法:

服务端:在增删改查相应的方法中调:

getContext().getContentResolver().notifiChange(Uri,null);该方法回触发ContentObserverOnchange()方法。

@Override
	public Uri insert(Uri uri, ContentValues contentValues) {
		SQLiteDatabase db = mySqlOpenHelper.getWritableDatabase();
		getContext().getContentResolver().notifyChange(uri, null);
		switch (sUriMatcher.match(uri)) {
		case STUDENT:
			db.insert(MySQLiteOpenHelper.TABLE_STUDENT, null, contentValues);
			break;

		default:
			break;
		}
		return null;
	}

客户端:代理类继承ContentObserver重写onChange()在其中做一些逻辑处理,一般我们会在这个方法区内用ContentObserver构造函数传来的Handler来进行Ui操作。

package com.example.sqlclienttextdemo;

import android.database.ContentObserver;
import android.os.Handler;

public class ClientObserver extends ContentObserver{
	
	private Handler mHanlder;
	
	public ClientObserver(Handler handler) {
		super(handler);
		mHanlder = handler;
	}
	
	@Override
	public void onChange(boolean selfChange) {
		super.onChange(selfChange);
		mHanlder.sendEmptyMessage(0);
	}
	
}
只是简单的收到Onchange()回调时发送了一个消息

Activity中通过:

getContentResolver().registerContentObserver(Uri,false/true[false只观察与这绝对匹配的Uritrue是只观察其子类变化])

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getContentResolver().registerContentObserver(uri, false, new ClientObserver(mHandler));
    }

private static final Uri uri = Uri.parse("content://"+"com.example.sqldatabasetextdemo/student");;
	private Handler mHandler = new Handler() {
		public void handleMessage(android.os.Message msg) {
			Toast.makeText(MainActivity.this, "sssssss", Toast.LENGTH_LONG).show();
		};
	};
上面只是做了一个主线程Toaster提示,可以根据需要做一些主线程的UI操作。

使用方法:

1,先启动服务端APP,进行增删改查等操作。

2,启动客户端APP也就是有观察服务端的APP,就会收到客户端的改动回调


注:如果对观察者模式感兴趣码友请关注我下一篇,观察者模式分析。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值