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

拦截短信,比如当发短信的时候,就把短信读取出来,当系统的短信发生变化的时候,大叫一声,把数据发送到公共的消息邮箱里面,我们的应用通过内容观察者观察公共的消息邮箱 获取ContentResolver对象,调用函数getContentResolver(), 调用ContentResolver对象的registerContentObserver(uri,notifyForDescendents,observer)方法,参数:Uri对象,是否精确uri(true不精确,false精确),observer…
拦截短信,比如当发短信的时候,就把短信读取出来,当系统的短信发生变化的时候,大叫一声,把数据发送到公共的消息邮箱里面,我们的应用通过内容观察者观察公共的消息邮箱 获取ContentResolver对象,调用函数getContentResolver(), 调用ContentResolver对象的registerContentObserver(uri,notifyForDescendents,observer)方法,参数:Uri对象,是否精确uri(true不精确,false精确),observer…
内容观察者是做什么的? 内容观察者主要用来观察数据库是否被操作了. 以查询数据库为例: 首先注册一个内容观察者(App1): //false 观察的Uri必须是一个确切的Uri 如果是true,只需要匹配一个主机名,后面所有的操作都生效 getContentResolver().registerContentObserver(uri,true,new MyContentObserver(new Handler())); private class MyContentObserver extend…
<Android 内容观察者的原理>中介绍了内容观察者的一些基本原理,并做了简单的实战,本文接着进一步做一个小项目实战 package com.wuyudong.smslistener; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.net.Uri; import andr…
1.内容观察者ContentObserver 如果ContentProvider的访问者需要知道ContentProvider中的数据发生了变化,可以在ContentProvider 发生数据变化时调用getContentResolver().notifyChange(uri, null)来通知注册在此URI上的访问者,例子如下: private static final Uri URI = Uri.parse("content://person.db"); public class…
内容观察者: 当关注应用的数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知 实现步骤: 1.假如是自定义的ContentProvider,需要在数据发送改变的方法中实现以下代码: ContentResolver cr = getContext().getContentResolver(); //发出通知,所有注册在这个uri上的内容观察者都可以收到通知 cr.notifyChange(uri, null); notifyChange(Ur…
下面通过3个应用程序之间的交互说明一下内容观察者: 一. 如下3个应用程序为相互交互的: 二.交互逻辑图: 三.具体代码: 1.   16_数据库工程: (1)数据库帮助类BankDBOpenHelper(继承自SQLiteOpenHelper): package com.itheima.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.databas…
1. 内容观察者 不属于四大组件,只是内容提供者ContentProvider对应的小功能. 如果发现数据库内容变化了,就会立刻观察到. 下面是逻辑图:       当A应用中银行内部的数据发生变化的时候,A应用会发送数据到一片公共内存,内存观察者会读取这个公共内存中的数据.从而知道A应用的数据库发生变化.       这个机制和广播接收者原理差不多,但是对于广播接收者,注册广播接受者的所以应用都会接收到广播,这样效率不好,所以google封装出来了一个API应用为:内容观察者.…
contentProvider:ContentProvider在Android中的作用是对外提供数据,除了可以为所在应用提供数据外,还可以共享数据给其他应用,这是Android中解决应用之间数据共享的机制. 通过ContentProvider我们可以对数据进行增删改查的操作.使用ContentProvider对外共享数据的好处是统一了数据的访问方式. ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用…
当数据库的数据发生改变,我们又想知道具体改变的情况时,就需要对数据库的变化情况做一个监控.这个任务,就由内容观察者来完成.下面这个案例,为短信数据库注册内容观察者,来监控短信的变化情况,当短信数据库发生改变的时候,去做相应的业务处理即可(这里只是打印log) 布局文件选择默认,因为用不到任何界面. 看一下主活动中的代码: package com.itydl.contentobserver; import android.net.Uri; import android.os.Bundle; imp…
对于想要拦截一些莫名的陌生号码,就需要电话拦截功能与删除其电话记录功能.拦截的主要业务逻辑,分别是在一个服务里面进行:1.注册电话监听:2.取消注册电话监听(当然注册于取消是在服务里面建立一个广播接收者).删除电话日志的功能,是靠内容观察者和内容提供者. 下面给出实现电话监听,取消注册监听,内容观察者监听电话数据库状态的主要代码.对于以后开发此类产品,不需要去查看系统源码,复制粘贴这段代码就行了.下面给出代码: 一.注册电话监听与内容观察者监控电话数据库状态: 因为是在服务里面,因此,注册写在o…
1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent&qu…
package com.example.observertest; import android.content.ContentResolver; import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBarActivity; import an…
前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了 ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对ContentObserver做下总结. ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于 数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它.触发器分为表触发器.行触发器, 相…
1. 内容观察者 不属于四大组件,只是内容提供者ContentProvider对应的小功能. 如果发现数据库内容变化了,就会立刻观察到. 下面是逻辑图:       当A应用中银行内部的数据发生变化的时候,A应用会发送数据到一片公共内存,内存观察者会读取这个公共内存中的数据.从而知道A应用的数据库发生变化.       这个机制和广播接收者原理差不多,但是对于广播接收者,注册广播接受者的所以应用都会接收到广播,这样效率不好,所以google封装出来了一个API应用为:内容观察者.…
下面通过3个应用程序之间的交互说明一下内容观察者: 一. 如下3个应用程序为相互交互的: 二.交互逻辑图: 三.具体代码: 1.   16_数据库工程: (1)数据库帮助类BankDBOpenHelper(继承自SQLiteOpenHelper): package com.itheima.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.databas…
//内容观察者(如果系统的短信发生了变化,比如刚获取一条短信,那么将触发onChange方法) ContentResolver contentResolver = getContentResolver(); Uri uri = Uri.parse("content://sms/"); contentResolver.registerContentObserver(uri, true, new ContentObserver(new Handler()) { @Override publ…
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Linux kernal的漏洞吗?本文将简单对root的破解原理进行分析. 网上有一篇文章已经对root破解的基本原理进行了简单介绍,大家可以先参考一下<android root权限破解分析>,本文只能说对root原理进行了方向性的描述,但是在一些具体的方面没有描述清楚.本文将会对其进行一些必要的扩展和…
#内容观察者 * 通过内容提供者可以访问到数据库,当数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知,类似于广播接受者,但是他不是广播. cr.registerContentObserver(Uri.parse("content://sms"), true, new MyObserver(new Handler())); class MyObserver extends ContentObserver{ public MyObs…
Activity public class MainActivity extends ListActivity {     private TextView tv_info;     private SMSContentObserver smsContentObserver;     private CallLogObserver callLogObserver;     private PhoneStateReceiver myReceiver;     @SuppressLint("Hand…
========================================================          ======================================================== =              [原创文章]:参考部分博客内容,学习之余进行了大量的筛减细化分析                        =          =                          [特殊申明]:避讳抄袭侵权之嫌疑,特…
========================================================          ======================================================== =              [原创文章]:参考部分博客内容,学习之余进行了大量的筛减细化分析                        =          =                          [特殊申明]:避讳抄袭侵权之嫌疑,特…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/44283093,本文出自:[张鸿洋的博客] 1.概述 在上一篇Android FoldingLayout 折叠布局 原理及实现(一)我们实现了下面的1,2,3. 1.Matrix的setPolyToPoly使用 2.在图片上使用渐变和阴影 3.初步的FoldingLayout的实现,完成图片的折叠显示(可控制折叠次数.包含阴影的绘制) 4.引入手势,手指可以可以FoldingLa…
[android] 内容提供者实现 上一节的主机名类似网络上的域名,协议是content://,可以定义一下规则 content://主机名/insert 添加操作 content://主机名/delete 删除操作 content://主机名/query 查询操作 content://主机名/update 修改操作 规则定义好之后,我们需要解析一下这个字符串,系统提供了一个api来匹配这个字符串 UriMatcher类,new出来对象new UriMatcher(code) code是个int…
内容提供者应用暴露的数据,是被多个其他应用访问(insert,update,delete,query),但如果L应用要查询(内容提供者应用暴露的数据),难道要开启子线程一直循环去查询 ? 答:开启子线程一直循环去查询是不合理的(是严重的错误),所以Android提供了Observer(内容观察者)这种机制,当内容提供者里面的数据发送变化(insert, update, delete),就会发出通知,L应用监听到发出的通知,就去查询数据,这样就完美解决了这个问题. 以下这幅图:把 (监听uri数据…
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465603       Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程     目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本来看其中主要涉…
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465551  Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程   一.update_binary的执行过程分析 上一篇幅中的子进程所执行的程序binary实际上就是update.zip包中的update-binary.我们在上文中也说过,Recovery服务在做这一部分工作的时候是先将包中update…
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465439  Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节            Recovery服务毫无疑问是Recovery启动模式中最核心的部分.它完成Recovery模式所有的工作.Recovery程序对应的源码文件位于:/gingerbread0919/bootable/recovery/recovery…
<Android插件化技术——原理篇>     转载:https://mp.weixin.qq.com/s/Uwr6Rimc7Gpnq4wMFZSAag?utm_source=androidweekly&utm_medium=website | 导语 插件化技术最早从2012年诞生至今,已经走过了5个年头.从最初只支持Activity的动态加载发展到可以完全模拟app运行时的沙箱系统,各种开源项目层出不穷,在此挑选了几个代表性的框架,总结其中的技术原理.由于本人水平有限,插件化框架又相…
1.1 什么是热修复 对于广大的移动开发者而言,发版更新是最为寻常不过的事了.然而,如果你 发现刚发出去的包有紧急的BUG需要修复,那你就必须需要经过下面这样的流程: 这就是传统的更新流程,步骤十分繁琐.总的来说,传统流程存在这几大弊端: 重新发布版本代价太大 用户下载安装成本太高 BUG 修复不及时,用户体验太差 相应的,许多开发者找到了比较合适的解决办法. Hybrid 方案.也就是把需要经常变更的业务逻辑以 H5 的方式独立出来.而这种方案, 需要传统的 java 开发者学习前端语言,不仅…