谈谈内容提供者——ContentProvider

2019-04-22  本文已影响0人  Eternal_life

概述
ContentProvider内容提供者是andorid四大组件之一ContentProvider为不同的软件之间数据共享,提供统一的接口。
作用:contentprovider在andorid中的作用就是对外共享数据,使用ContentProvider对外共享的好处就是统一了数据的访问方式也就是说,可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以ContentProvider对应用中的数据进行增删改查操作。

话不多说上图

事件纷发.png
简单概述一下事件纷发的过程
从activity开始进入事件纷发:Activity无论返回true或者false,都是自己消费;因为它自己就是顶层,被系统消费,当返回super向下纷发。交给子ViewGroup,如果viewGroup的dispatchTouchEvent返回true就自己消费,返回false就交给上一层消费,返回super就交给自身拦截事件,拦截事件返回true的话自己消费,其他的返回结果就是继续纷发(在这提醒一下大家只有容器才有OnInterceptTouchEvent,也就是说只有ViewGroup才有这个方法)子View的纷发事件为true自己消费,返回false交给上一层

进入细节代码

创建属于自己的ContentProvider,实现对外共享的步骤
(1)继承ContentProvider,重新方法,代码如下:

public class PersonContentProvider extends ContentProvider{
    public boolean onCreate()
   
    public Uri insert(Uri uri, ContentValues values)
 
    public int delete(Uri uri, String selection, String[] selectionArgs)
 
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
    public String getType(Uri uri)
}

(2)在AndroidMainfest.xml文件中配置文件,在代码中操作

然后给大家介绍一下URI
(1)概述
Uri代表要操作的数据
Uri主要是包含了两部分:
a.需要操作的ContentProvider
b.对ContentProvider要进行操作
(2)Url组成
1).ContentProvider的scheme已经被Android规定
scheme:就是content
2).主机名或者叫(Authority)用于唯一识别这个ContentProvider,外部调用者看可以根据这个标识来找到它
3).路径(path)可以用来标识我们要操作的数据
4).操作不同的数据,来自数据库、文件、xml或者网络
操作方式:Uri uri=Uri.parse("");

当然不能忘了在清单文件里注册

<provider 
      android:name="com.example.contentproviderpractice.PeopleContentProvider"
      android:authorities="com.example.student"
      android:exported="true" >
</provider>
上一篇下一篇

猜你喜欢

热点阅读