zoukankan      html  css  js  c++  java
  • Android之Content ProviderII

    Creating a Content Provider

      要建立一个content provider,你必须:

      1、建立一个系统来存储数据。大多数content providers存在他们的数据使用Android的文件存在方法或SQLite数据库,但你可以存储你的数据你希望的任何方法。Android提供 SQLiteOpenHelper类来帮助你建立一个数据库和SQLiteDatabase来管理它。

      2、扩展ContentProvider类来提供数据的访问。

      3、声明content provider在manifest文件为你的应用程序(AndroidManifest.xml)。

      下面的部分有关后两样的注意事项。

    Extendig the Content Provider class

      你定义一个ContentProvider子类来暴露你你的数据给别人使用ContenResolver和Cursor期望的协议。原则上,这意味着实现6个虚方法声明在ContentProvider类中的:

      

      query()方法必须返回一个Cursor 对象可以遍历你请求的数据。Cursor它本身是个接口,但Android提供一些准备好的Cursor对象你可以使用。例如,SQLiteCursor能可遍历数据存储在SQLite数据库。你获得一个Cursor对象通过调用任何SQLiteDatabase的query()方法。也有其它的Cursor实现 --例如MatrixCuror  --对于数据不存在于数据库中的情况。

      因为这些ContentProvider方法能各种ContentResolver对象调用在不同的进程和线程里,他们必须以线程安全的方式实现。

      作为礼貌,你也可能希望调用ContentResolver.notifyChange()来通知收听者当有有数据修改时。

      除了定义它的子类外,有其它的步骤你应该做来简单客户的工作并且让类更易访问:

      1、定义一个公共的静态常量Uri命名为CONTENT_URI。这是代表全"content:URI"的字符串,你的provider操作的。你必须 定义一个独特的字符串为这个值。最好的解决方法是使用全称类名作为content provider(小写)。例如,TransportationProvider的URI类可以按如下定义:

      

      如果provider有子表,也定义CONTENT_URI常量给每一个子表。这些URI应该有同样的权限,只能被他们的路径分辨。例如:

      

      定义列名content provider将会返回给客户的。如果你在使用一个潜在的数据库,这些列名通常同一的SQL database列名。也定义公共的静态String常量,客户可以使用来查询指定的列。

      …………(此处省略250字)

    Declaring the content provider

      为了让Android系统知道你开发的content provider,声明它用<provider>元素在manifest文件里。Content Providers没有在manifest文件里对Android系统不可见。

      name局长覆盖了ContentProvider子类。authorities属性content:URI权限。例如如果ContentProvider子类是AutoInfoProvider,<provider>可以会像这样:

      

      注意authorities属性遗漏了content:URI路径。例如,如果AutoInfoProvider控制子表为不同的auto或不同的制造者,

      

      …………(此处省略250字)

    Content URI Summary

      …………(此处省略250字)

  • 相关阅读:
    C#读取系统信息
    C# 读取驱动器盘符及信息
    for循环里的break,continue和return有什么差别
    monkey
    ZXing
    python中os模块的常用接口和异常中Exception的运用
    python中的字典应用实例
    python中的列表和字典
    python中如何单独测试一个函数的作用
    数据挖掘概念与技术PDF
  • 原文地址:https://www.cnblogs.com/tekkaman/p/2076060.html
Copyright © 2011-2022 走看看