• Android简易实战教程--第二十一话《内容观察者监听数据库变化》


    当数据库的数据发生改变,我们又想知道具体改变的情况时,就需要对数据库的变化情况做一个监控。这个任务,就由内容观察者来完成。下面这个案例,为短信数据库注册内容观察者,来监控短信的变化情况,当短信数据库发生改变的时候,去做相应的业务处理即可(这里只是打印log)

    布局文件选择默认,因为用不到任何界面。

    看一下主活动中的代码:

    package com.itydl.contentobserver;
    
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Handler;
    import android.app.Activity;
    import android.content.ContentResolver;
    import android.database.ContentObserver;
    import android.view.Menu;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            //注册一个内容观察者,监听短信数据库内容的改变
            ContentResolver cr = getContentResolver();
            //uri:监听哪个uri上的内容提供者的通知,数据库的uri
            //notifyForDescendents:如果是true,那么只要以content://sms开头的uri的数据改变,都能收到通知,比如content://sms/inbox。其实写死true即可
            //第三个参数:表示内容观察者的实例(这里继承ContentObserver实现类)
            cr.registerContentObserver(Uri.parse("content://sms"), true, new MyObserver(new Handler()));
        }
        
        class MyObserver extends ContentObserver{
    
    		
        	
    		public MyObserver(Handler handler) {
    			super(handler);
    			// 空构造。不许需要做任何的处理
    		}
    
    		//收到数据改变的通知,此方法调用
    		@Override
    		public void onChange(boolean selfChange) {
    			// TODO Auto-generated method stub
    			super.onChange(selfChange);
    			System.out.println("短信数据库改变");
    		}
    		
        }
    
    
        
        
    }
    

    现在可以运行程序了,然后往模拟器或者手机上,发送一条短信,改变短信数据库。发现,每发送一条短信,或者接受一条短信,log就会输出。



  • 相关阅读:
    最佳路径搜索算法1
    积分方程的程序化解决方案
    lcov
    nvidia driver
    dependency
    scp ssh-server
    boost 安装 latest
    ubuntu 快捷键
    nvidia drive
    查询优化器 postgres
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299609.html
Copyright © 2020-2023  润新知