内容观察者是做什么的?

内容观察者主要用来观察数据库是否被操作了。

以查询数据库为例:

首先注册一个内容观察者(App1):

 //false 观察的Uri必须是一个确切的Uri  如果是true,只需要匹配一个主机名,后面所有的操作都生效
         getContentResolver().registerContentObserver(uri,true,new MyContentObserver(new Handler()));

 private class MyContentObserver extends ContentObserver{

         /**
          * Creates a content observer.
          *
          * @param handler The handler to run {@link #onChange} on, or null if none.
          */
         public MyContentObserver(Handler handler) {
             super(handler);
         }

         //当观察的Uri发生改变的时候执行
         @Override
         public void onChange(boolean selfChange) {
             System.out.println("数据库被操作了!!!!!");
             super.onChange(selfChange);
         }
     }

onChange()方法:当观察的Uri的数据库被操作的时候,会执行onChange()方法。

App2操作数据库:

     private void doQuery(){
         Uri uri = Uri.parse("content://com.coderwei.provider/query");
         Cursor cursor = getContentResolver().query(uri,new String[]{"name","money"},null,null,null);

         if (cursor!=null){
             //如果操作了数据库,就发出一个通知
             this.getContentResolver().notifyChange(uri,null);
             while (cursor.moveToNext()){
                 String name = cursor.getString(0);
                 String money = cursor.getString(1);
                 System.out.println("name:"+name+"  money: "+money);
             }
         }
     }

Android内容观察者的更多相关文章

  1. Android 内容观察者的原理

    拦截短信,比如当发短信的时候,就把短信读取出来,当系统的短信发生变化的时候,大叫一声,把数据发送到公共的消息邮箱里面,我们的应用通过内容观察者观察公共的消息邮箱 获取ContentResolver对象 ...

  2. [android] 内容观察者

    拦截短信,比如当发短信的时候,就把短信读取出来,当系统的短信发生变化的时候,大叫一声,把数据发送到公共的消息邮箱里面,我们的应用通过内容观察者观察公共的消息邮箱 获取ContentResolver对象 ...

  3. Android 利用内容观察者实现短信窃听

    <Android 内容观察者的原理>中介绍了内容观察者的一些基本原理,并做了简单的实战,本文接着进一步做一个小项目实战 package com.wuyudong.smslistener; ...

  4. 无废话Android之内容观察者ContentObserver、获取和保存系统的联系人信息、网络图片查看器、网络html查看器、使用异步框架Android-Async-Http(4)

    1.内容观察者ContentObserver 如果ContentProvider的访问者需要知道ContentProvider中的数据发生了变化,可以在ContentProvider 发生数据变化时调 ...

  5. Android开发之内容观察者

    内容观察者: 当关注应用的数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知 实现步骤: 1.假如是自定义的ContentProvider,需要 ...

  6. Android(java)学习笔记253:ContentProvider使用之内容观察者02

    下面通过3个应用程序之间的交互说明一下内容观察者: 一. 如下3个应用程序为相互交互的: 二.交互逻辑图: 三.具体代码: 1.   16_数据库工程: (1)数据库帮助类BankDBOpenHelp ...

  7. Android 之内容提供者 内容解析者 内容观察者

    contentProvider:ContentProvider在Android中的作用是对外提供数据,除了可以为所在应用提供数据外,还可以共享数据给其他应用,这是Android中解决应用之间数据共享的 ...

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

    当数据库的数据发生改变,我们又想知道具体改变的情况时,就需要对数据库的变化情况做一个监控.这个任务,就由内容观察者来完成.下面这个案例,为短信数据库注册内容观察者,来监控短信的变化情况,当短信数据库发 ...

  9. Android初级教程反射+AIDL+内容观察者监控黑名单号码代码模板

    对于想要拦截一些莫名的陌生号码,就需要电话拦截功能与删除其电话记录功能.拦截的主要业务逻辑,分别是在一个服务里面进行:1.注册电话监听:2.取消注册电话监听(当然注册于取消是在服务里面建立一个广播接收 ...

随机推荐

  1. C++ 笔记(二) —— 不要在构造和析构函数中调用虚函数

    ilocker:关注 Android 安全(新手) QQ: 2597294287 class Transaction { //所有交易的 base class public: Transaction( ...

  2. [转]关于信息安全认证CISP与CISSP的对比及分析

    本文转自:https://www.douban.com/group/topic/89081816/ 最近好多信息安全行业或者打算转行的职场人在纠结学CISP还是学CISSP,我给大家就CISP和CIS ...

  3. [转]MongoDB基本命令用

    本文转自:http://www.cnblogs.com/liyonghui/p/mongodb.html 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输 ...

  4. MMORPG大型游戏设计与开发(游戏服务器 游戏场景 概述 updated)

    我们在玩游戏的时候,我们进入游戏后第一眼往往都是看到游戏世界中的场景,当然除了个别例外,因为那些游戏将游戏场景隐藏了起来,如文字游戏中的地点一样.既然我们接触了游戏世界的核心,那么作为核心的场景又包括 ...

  5. plain framework 1 参考手册 入门指引之简介

    简介 简介 能做什么? LINUX WINDOWS 简介 简约框架(plain framework)是一款基于C/C++开发的,跨平台(windows/linux)应用的基础框架,开发者可以利用此框架 ...

  6. POJ2488A Knight's Journey[DFS]

    A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 41936   Accepted: 14 ...

  7. Android M新的运行时权限开发者需要知道的一切

    android M 的名字官方刚发布不久,最终正式版即将来临!android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿, ...

  8. 在Android中如何获取视频的第一帧图片并显示在一个ImageView中

    String path  = Environment.getExternalStorageDirectory().getPath(); MediaMetadataRetriever media = n ...

  9. ubuntu为用户增加sudoer权限的两种方法

    方法一.使用usermod命令 新增user sudo adduser username 增加sudo权限 sudo usermod -aG sudo username sudo usermod -a ...

  10. UIDate(时间)

    1.时间与时间的比较 ["时间1" timeIntervalSinceDate:"时间2"] >= 0;