ContentProvider的使用指南

一、什么是ContentProvider?

    ContentProvider是一个抽象类,可以理解为一个特殊的存储数据的类型,它提供了一套标准的接口来获取和操作数据。可以把数据封装到ContentProvider 中,从而是这些数据可以被其他的应用程序所共享。搭建起了所有应用程序之间数据交换的桥梁。

二、ContentProvider的创建过程   
    1.创建一个类继承ContentProvider,实现其所有的抽象方法。

------------------------------------------------------------------------------------------------------------------------

public class MyProvider extends ContentProvider{
    @Override
    public boolean onCreate() {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * 实现删除动作,需要区分该uri是一个具体的row id还是代表多条记录。如果是单挑记录,则需要解析出id好,添加在sql语句中。执行完后要
     * 调用getContentResolver().notifyChange(uri, null)通知给该uri的注册者。
     * @param uri The full URI to query, including a row ID (if a specific record is requested).
     * @ selection An optional restriction to apply to rows when deleting.
     * return The number of rows affected.
     */
    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        // TODO Auto-generated method stub
        return 0;
    }

    /**
     * 返回给定uri所对应数据的mimeType类型,对于单条记录,mimeType以"vnd.android.cursor.item/"开头;对于多条记录,mimeType则以"vnd.android.cursor.dir/"开头。
     * @param uri the URI to query.
     * @return a MIME type string, or {@code null} if there is no type.
     */
    @Override
    public String getType(Uri uri) {
        // TODO Auto-generated method stub
        return null;
    }

    /**
     * 插入一条新的记录,该方法可以在多个线程中被调用.一般在插入后要调用getContext().getContentResolver().notifyChange(uri, null)通知给该uri的注册者。
     * @param uri The content:// URI of the insertion request.
     * @param values A set of column_name/value pairs to add to the database.
     * @return The URI for the newly inserted item.
     */
    @Override
    public Uri insert(Uri uri, ContentValues values) {
        // TODO Auto-generated method stub
        return null;
    }
 
    /**
     * 处理客户端(进程或线程)的查询请求,并返回一个cursor。该方法由ContentResolver调用。
     */
    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
            String sortOrder) {
        // TODO Auto-generated method stub
        return null;
    }

    /**
     * 该uri对应的多行(也可以只有一行)中,所有满足selection和selectionArgs条件的行,都将使与ContentValues中的key对应的属性值得到更新。执行完后要
     * 调用getContentResolver().notifyChange(uri, null)通知给该uri的注册者。
     * @param uri 要查询的uri, 
     */
    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        // TODO Auto-generated method stub
        return 0;
    }
}

--------------------------------------------------------------------------------------------------------------------------------

你可能感兴趣的:(Android应用)