zoukankan      html  css  js  c++  java
  • ContentProvider的一些总结

      ContentProvider中的URI,

    • The URI that identifies the provider   一个特定的uri对应着唯一一个内容提供者,

     谷歌官方文档里的说明,

    Querying a Content Provider

    You need three pieces of information to query a content provider:

    • The URI that identifies the provider
    • The names of the data fields you want to receive
    • The data types for those fields

    If you're querying a particular record, you also need the ID for that record.

    Making the query

    To query a content provider, you can use either the ContentResolver.query() method or the Activity.managedQuery() method. Both methods take the same set of arguments, and both return a Cursor object. However, managedQuery() causes the activity to manage the life cycle of the Cursor(使用managedQuery()这个方法,会促使Cursor的生命周期受制于Activity). A managed Cursor handles all of the niceties, such as unloading itself when the activity pauses, and requerying itself when the activity restarts. You can ask an Activity to begin managing an unmanaged Cursor object for you by calling Activity.startManagingCursor().

    The first argument to either query() or managedQuery() is the provider URI — the CONTENT_URI constant that identifies a particular ContentProvider and data set (see URIsearlier).

    To restrict a query to just one record, you can append the _ID value for that record to the URI — that is, place a string matching the ID as the last segment of the path part of the URI. For example, if the ID is 23, the URI would be:

    content://. . . ./23

    There are some helper methods, particularly ContentUris.withAppendedId() and Uri.withAppendedPath(), that make it easy to append an ID to a URI. Both are static methods that return a Uri object with the ID added. So, for example, if you were looking for record 23 in the database of people contacts, you might construct a query as follows:

    import android.provider.Contacts.People;
    import android.content.ContentUris;
    import android.net.Uri;
    import android.database.Cursor;
    
    // Use the ContentUris method to produce the base URI for the contact with _ID == 23.
    Uri myPerson = ContentUris.withAppendedId(People.CONTENT_URI, 23);
    
    // Alternatively, use the Uri method to produce the base URI.
    // It takes a string rather than an integer.
    Uri myPerson = Uri.withAppendedPath(People.CONTENT_URI, "23");
    
    // Then query for this specific record:
    Cursor cur = managedQuery(myPerson, null, null, null, null);
    

      

  • 相关阅读:
    浏览器渲染原理
    React Router
    链式 add 函数
    函数防抖和函数节流
    242. 有效的字母异位词
    faker 生成模拟数据
    A 第五课 二叉树与图
    使用递归解决问题
    A 第四课 递归_回溯_分治
    A 第三课 贪心算法
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4785640.html
Copyright © 2011-2022 走看看