广播接受者 时间很短,不要用耗时的,不要超过16s。 这个运行在主线程。
2017-08-03 11:28
267 查看
什么是 content provider?
四大组件之一。需要 在xml文件定义
如 <providerandroid:name=”” andoid:authorities =”” android:exported=””>
Authorities 权力的意思。 一定要记住单词意思。
Exported 出口 输入的意思。 一定要记住这个单词的意思。
这里android:exported 是声明这个提供者 是不是允许其他人来访问使用(输出)。如果是true代表允许其他人来使用这个提供者。
是否允许其他的应用程序访问我当前这个应用程序的数据
内容提供者是 提供操作数据的接口, 不能存储数据。
它可以跨进程访问。就是 其他应用可以访问这个数据。共享自己的数据给其他应用访问。
Android 手机 默认的有通讯录,图片,音视频 等,这些都是内容提供者。
内容提供者的数据修改更新 会被监听。 就是内容观察者 contentObserver.
思考 :为什么内容提供可以跨进程访问?
如何实现数据访问?需要用到 内容解析器 contentResolver .
记住这单词 resolver 解析器,求解器。
Context.getContentResolver();
他的原理,源码怎么实现的
用source insight 打开源码
查找 contentResolver 打开这个类这个文件 contentResoler.java
contentResolver :
提供四个与contentProvider相一致的方法。比如insert方法。发现它是通过传入的uri,还有通过 IContentProvider的insert方法实现的
ContentProvider 有个内部类是 Transport implements IcontentProvider
Uri:是统一资源标识符。 主要用于标识网络图片网址。
Uri结构 是协议://用户名:密码@主机名:端口号/路径/文件?参数1=值1&参数2=值2
在内容提供者这里 它规范的uri对应是 协议:conrtent://
域名:android:authorities
路径:/contacts
其他的三大组件是通过Intent
这个组件通过 的是uri
需要练习, 通过source insight软件 来查看源码
手机自身数据的访问
可以用文件浏览器看到 在 data/data/ 这个目录下面,里面有好多文件夹com.android.providers. 开头的文件夹。 这些都是手机自身的内容提供者数据。
有应用 applications 有月历calendar 有联系人contacts有下载downloads有下载uidownloads.ui 有 drm 不知道是什么。 有媒体media,有设置settings 有手机电话telephony
有用户词典 userdictionary。这些。
通讯录contactsContract.Contacts.CONTENT_URI 管理联系人的Uri
手机内部存储器上的图片MediaStore.Audio.Images.INTERNAL_CONTENT_URI
手机内存上的音频MediaStore.Audio.Media.INTERNAL_CONTENT_URI
Sd卡上的视频MediaStore.Audio.Video.EXTERNAL _CONTENT_URI
INTERNAL 就是内部的意思。Internal 记住这个单词。
External 外部的。
Contact的意思 是联系的意思。
常量的单词 是 constant
Contract 的意思 是合同。
数据更新原理 ,内容解析器contenResolver注册内容观察者contentObserver实际是 通过ContentService注册观察者。
ContentService里面有个方法是 notifyChange(Uri) {
Observer.onchange();//这个就是我们构造的观察者对象,调用它的这个方法
}
内容观察者里面有个方法是 onchange()方法。这个方法,就是数据改变的时候
内容观察者的构造方法 用到了handler 通过这个处理UI。
简历里面要有亮点。别人不知道的。
广播的作用域 就是全局。
生命周期是 就是一个函数的生命周期。
静态注册,xml文件注册。程序安装就已经有广播接受者了。
动态注册。代码注册。 程序必须运行到注册代码才有。
广播接受者 时间很短,不要用耗时的,不要超过16s。 这个运行在主线程。
OnReceive() 这个函数就是广播的生命周期。OnReceive执行完后,它声明的对象会被回收掉。
四大组件之一。需要 在xml文件定义
如 <providerandroid:name=”” andoid:authorities =”” android:exported=””>
Authorities 权力的意思。 一定要记住单词意思。
Exported 出口 输入的意思。 一定要记住这个单词的意思。
这里android:exported 是声明这个提供者 是不是允许其他人来访问使用(输出)。如果是true代表允许其他人来使用这个提供者。
是否允许其他的应用程序访问我当前这个应用程序的数据
内容提供者是 提供操作数据的接口, 不能存储数据。
它可以跨进程访问。就是 其他应用可以访问这个数据。共享自己的数据给其他应用访问。
Android 手机 默认的有通讯录,图片,音视频 等,这些都是内容提供者。
内容提供者的数据修改更新 会被监听。 就是内容观察者 contentObserver.
思考 :为什么内容提供可以跨进程访问?
如何实现数据访问?需要用到 内容解析器 contentResolver .
记住这单词 resolver 解析器,求解器。
Context.getContentResolver();
他的原理,源码怎么实现的
用source insight 打开源码
查找 contentResolver 打开这个类这个文件 contentResoler.java
contentResolver :
提供四个与contentProvider相一致的方法。比如insert方法。发现它是通过传入的uri,还有通过 IContentProvider的insert方法实现的
ContentProvider 有个内部类是 Transport implements IcontentProvider
Uri:是统一资源标识符。 主要用于标识网络图片网址。
Uri结构 是协议://用户名:密码@主机名:端口号/路径/文件?参数1=值1&参数2=值2
在内容提供者这里 它规范的uri对应是 协议:conrtent://
域名:android:authorities
路径:/contacts
其他的三大组件是通过Intent
这个组件通过 的是uri
需要练习, 通过source insight软件 来查看源码
手机自身数据的访问
可以用文件浏览器看到 在 data/data/ 这个目录下面,里面有好多文件夹com.android.providers. 开头的文件夹。 这些都是手机自身的内容提供者数据。
有应用 applications 有月历calendar 有联系人contacts有下载downloads有下载uidownloads.ui 有 drm 不知道是什么。 有媒体media,有设置settings 有手机电话telephony
有用户词典 userdictionary。这些。
通讯录contactsContract.Contacts.CONTENT_URI 管理联系人的Uri
手机内部存储器上的图片MediaStore.Audio.Images.INTERNAL_CONTENT_URI
手机内存上的音频MediaStore.Audio.Media.INTERNAL_CONTENT_URI
Sd卡上的视频MediaStore.Audio.Video.EXTERNAL _CONTENT_URI
INTERNAL 就是内部的意思。Internal 记住这个单词。
External 外部的。
Contact的意思 是联系的意思。
常量的单词 是 constant
Contract 的意思 是合同。
数据更新原理 ,内容解析器contenResolver注册内容观察者contentObserver实际是 通过ContentService注册观察者。
ContentService里面有个方法是 notifyChange(Uri) {
Observer.onchange();//这个就是我们构造的观察者对象,调用它的这个方法
}
内容观察者里面有个方法是 onchange()方法。这个方法,就是数据改变的时候
内容观察者的构造方法 用到了handler 通过这个处理UI。
简历里面要有亮点。别人不知道的。
广播的作用域 就是全局。
生命周期是 就是一个函数的生命周期。
静态注册,xml文件注册。程序安装就已经有广播接受者了。
动态注册。代码注册。 程序必须运行到注册代码才有。
广播接受者 时间很短,不要用耗时的,不要超过16s。 这个运行在主线程。
OnReceive() 这个函数就是广播的生命周期。OnReceive执行完后,它声明的对象会被回收掉。
相关文章推荐
- 做作业还是不要装逼。呜呜,知错了。谁能知道这个小小的问题浪费了我多少时间。一个上午的努力!!!
- 全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
- java获取当前应用的运行信息(内存,线程,运行时间,状态等)
- Golang记录、计算函数执行耗时、运行时间的一个简单方法
- mysql插入int字段可以使用单引号包含?今天改东西无意发现时间字段成int类型了,而且update这个字段用单引号包含,于是在MySQL上测试下能运行,求解
- Swing中耗时任务需要另起新线程,这个新线程中更新GUI的操作仍需由EDT来做(转)
- 线程实现间隔时间运行一次
- java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序
- synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行 它包
- Java多线程下统计多个线程的运行时间
- linux下巧用ps得到运行线程个数和线程启动时间
- 如何在VC6.0中得到一个程序的运行时间,也就是这个程序耗费的时钟周期数// C和C++的时间编程
- Windows核心编程学习笔记(12)--线程与进程运行的时间
- linux下c++多线程下用CLOCK()函数统计程序运行时间 2012-12-11 12:46:01 分类: C/C++ clock()函数的功能: 这个函数返回从“开启这个程序进程”到
- 吃晚饭,不要晚于这个时间
- java线程一之创建线程、线程池以及多线程运行时间统计
- Active Server Pages, ASP 0113 (0x80004005)超过了脚本运行的最长时间
- 解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载
- Active Server Pages, ASP 0113 (0x80004005)超过了脚本运行的最长时间
- 超过了脚本运行的最长时间..Server.ScriptTimeOut 属性指定新值