zoukankan      html  css  js  c++  java
  • ContentProvider要点复习

    ContentProvider要点复习

    ContentProvider作为四大组件之一,发挥着举足轻重的作用。与之相关联的另外两个类分别是ContentResolver和ContentObserver。

    ContentProvider

    内容提供者,暴露数据和操作数据的方法给外界,如联系人、短信、多媒体等数据库中的数据,是一种数据共享的方法。

    使用ContentProvider需要继承该类并注册在清单文件,并且指明其authorities属性以指定外界的访问“路径”,exported属性指定是否暴露出去。

    继承之后需要复写onCreate insert delete update query 等方法。其中Uri是的格式可以是

    content://<authorities>/<资源>/<ID>
    

    Android提供了管理URI的工具类UriMatcher和ContentUris。UriMatcher提供了两个常用的方法void addURI(String autority, String path, int code),int match()。ContentUris提供了withAppendedId(Uri id),paresId(uri)。

    ContentProvider的生命周期只有一个方法onCreate,并且只有在第一次访问时会被回调。

    ContentResolver

    Context中提供了getContentResolver()方法获取ContentResolver实例,然后让调用该实例的query insert等方法进行操作,会调用到相应内容提供者的相应的方法。

    ContentObserver

    内容观察者,当其监听的数据发生改变的时候,会回调其中的onChange方法进行相应操作的处理。

    getContentResolver().registerContentObserver(uri, new ContentObserver{
        public void onChange(boolean selfChange){
    	    // xxx
        }
    });
    

    在应用层中对该组件的使用较少,也更少会用三方应用让自己的数据暴露出去。在系统层中,对内容观察者的使用不在少数,比如在设置中打开或关闭了某个开关,可能只是会更改数据库中的一个值,而并不调用framework提供的接口,然后在framework中会监听该值的变化,然后从数据库中将该值获取,然后再进行其他操作。

  • 相关阅读:
    columns布局应用场景
    flex速记
    css属性选择器模糊匹配
    ydui的rem适配方案
    vscode搜索失效问题
    ESP8266 超声波测距模块HC-SR04
    树莓派PICO Wifi 无线网卡 esp82666接线图
    查看数据库容量大小
    面试官问我JVM内存结构,我真的是
    深入浅出Java内存模型
  • 原文地址:https://www.cnblogs.com/hackerkevin/p/4743613.html
Copyright © 2011-2022 走看看