zoukankan      html  css  js  c++  java
  • ContentProvider初步笔记

    Provider

    查阅文档,重点功能是在不同的应用程序之间共享数据,很少去实现它,大部分是使用android内部的Content provider
    (一)基本概念
    (1)为存储或获取数据提供了统一的接口
    (2)可以在不同的应用程序之间共享数据
    (3)android 为常见的一些数据提供了 ContentProvider(包括音频图片动画通讯录等)
    URI为每一个ContentProvider所共有,用于表示ContentProvider所提供的数据,一个应用对应一个ContentProvider,外部通过CONTENT_URI来获取自身提供的数据(数据模型ContentProvider使用表的形式来组织数据)
    ContentProvider提供的函数:
    query,insert,update,delete,getType,onCreate
    (二)实现ContentProvider过程:
    (1)定义CONTENT_URI常量
    必须是唯一的 public static final Uri CONTENT_URI = Uri.parse("content://带包名的完整的类名");
    (要是存在很多表应为每一个子表定义一个CONTENT_URI,并且表中必须存在一个名为_id的列)
    数据类型
    读取整个表中的数据:"vnd.android.cursor.dir/名字"、
    读取某一个列的数据:"vnd.android.cursor.item/名字"
    (2)定义一个类,继承ContentProvider
    在其中定义一个UriMatcher对象用于检查URI是否合法,具体实现参看Contact类的ContentPrivider,根据其实现方法自定义一个检查机制
    (3)实现query,insert,update,delete,getType,onCreate方法
    uriMatcher.match(uri)返回相应的int值
    insert方法:
    参数: Uri uri ,ContentValues values(键值对)
    返回值:Uri(表示干刚使用这个函数所插入的数据)
    dh = new DataBaseHelper(getContext(),FirstProviderMetaData.DATABASE_NAME)
    SQLiteDatabase db = dh.getWriteDatabase();//获得可写的SQLite数据库
    long rowId = db.insert(UserTableMetaData.TABLE_NAME,null,values)//执行查询方法,返回刚插入记录的ID
    Uri uri = ContentUris.withAppendId(UserTableMetaData.CONTENT_URI,rowId);//把新生成的ID追加到ContentURI后面
    getContext().getContentResolver.notifyChange(insertedUserUri,null);//通知监听器数据已经改变
    return  uri
    query方法:
    参数Uri,projection,selection,selectionArgs,oderBy
    返回值:Cursor对象
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();//使用SQLiteQueryBuilder类创建一个查询的语句
    qb.setTables(表名);
    qb.setProjectionMap(HashMap对象);//将事先添加好的键值对添加到qb子句中
    qb.appendWhere(where子句)
    (查找函数uri.getPathSegments()的具体功能)
    Cursor c = qb.query(db,projection,selection,selectionArgs,null,null,oderBy)
    c.setNotificationUri(getContext.getContentResolver(),uri);//通知监听器数据已经查询成功
    (4)在AndroidManifest.xml中进行声明
    <provider android:name="类名全称"
    android:authorities="URI中间的字串"/>
    URI中间的字串:如content://authority/名称中的authority
  • 相关阅读:
    华为软件研发面试题1
    中兴软件面试题2
    中兴面试题1
    排 序 算 法
    hadoop集群环境的搭建
    各种排序算法的分析及java实现
    白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
    白话经典算法系列之三 希尔排序的实现
    白话经典算法系列之二 直接插入排序的三种实现
    白话经典算法系列之一 冒泡排序的三种实现
  • 原文地址:https://www.cnblogs.com/Gaojiecai/p/2136887.html
Copyright © 2011-2022 走看看