`
kaozjlin
  • 浏览: 116414 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

Android开发——数据存储之ContentProvider(1)

阅读更多

一、Android中四种数据存储方式

1、SharePreferences: 一种轻量级的数据存储方式,采用键值对的方式存储。最终还是以文件的方式存储。主要用了应用的配置,类型window中常见的*.ini文件。数据不共享,只能提供给一个应用使用。

2、SQLite:一个用于移动设备,小而强大的数据库。数据可以共享。

3、文件存储:就是文件操作咯。一般用了体积较大的文件,比如图片。

4、ContentProvider: 提供一种各个应用之间数据共享机制。以URI的形式提供访问地址。比如 content://contacts/people(有点REST的感觉) 可以访问系统中的联系人列表。这里的URI就可以用来构造Intent对象了。ContentProvider的数据存储是多种多样的,可以用数据库,文件,甚至是存放在网络的某个地方。

在Android中,注册一个ContentProvider,不单单是注册一个共享数据源,还包括数据源对应的Activity。所以Intent(action,Uri),由action和uri共同决定“目的地”。

示例代码一:

   1: btn.setOnClickListener(new View.OnClickListener() {
   2:             public void onClick(View view) {
   3:                 Log.d(TAG, "startActivityForResult");
   4:                 Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people"));
   5:                 startActivityForResult(i, PICK_REQUEST);
   6:             }
   7:         });

如上代码,在任何应用任何地方,执行以上代码,结果都是一样的,就是现实联系人列表,如下图:

device

我们创建的ContentProvider,是一个独立的类型,实际上跟Activity是没有关系的,跟应用也没有没有。一旦在某个应用的AndroidMainfest.xml进行配置,并将此应用安装到Android系统中,activity就和ContentProvider进行关联,而且这种关联是多对多的关联,所以切换Activity的时候时而有多个activity可以选择。

我不经意产生如下疑问有待解决:

系统如何管理ContentProvider(Uri),以及它们对应的应用(Activity)之间的关系呢?

二、创建一个ContentProvider

1、创建属性对象

示例代码二:

   1: package com.halzhang.android.provider;
   2:  
   3: import android.net.Uri;
   4: import android.provider.BaseColumns;
   5:  
   6: /**
   7:  * 属性对象
   8:  * 
   9:  * @author LeoYang
  10:  */
  11: public final class TodoList {
  12:  
  13:     public static final String AUTHORITY = "com.halzhang.android.provider.TodoList";
  14:  
  15:     private TodoList() {
  16:     }
  17:  
  18:     public static final class Todo implements BaseColumns {
  19:  
  20:         private Todo() {
  21:         }
  22:  
  23:         // content uri
  24:         public final static Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/todos");
  25:  
  26:         // mime类型
  27:         public final static String CONTENT_TYPE = "vnd.halzhang.cursor.dir/com.halzhang.android.todo";
  28:  
  29:         // 单个数据的MIME类型在android中是有Uri和MIME来指定唯一一个Content的
  30:         public final static String CONTENT_ITEM_TYPE = "vnd.halzhang.cursor.item/com.halzhang.android.todo";
  31:  
  32:         // 默认的排序方式
  33:         public final static String DEFAULT_SORT_ORDER = "modified DESC";
  34:  
  35:         public final static String TITLE = "title";
  36:  
  37:         public final static String CONTENT = "content";
  38:  
  39:         public final static String CREATED_DATE = "created";
  40:  
  41:         public final static String MODIFIED_DATE = "modified";
  42:     }
  43:  
  44: }
分享到:
评论

相关推荐

    Android源码——数据库SQLite.zip

    总的来说,"Android源码——数据库SQLite.zip"的内容涵盖了SQLite在Android中的使用、数据库的创建与管理、SQL操作、事务处理、性能优化等方面的知识,对于深入理解Android应用的数据存储机制具有很高的学习价值。

    安卓Android源码——数据口袋.zip

    1. 数据存储机制:Android提供了多种数据存储方式,如SQLite数据库、SharedPreferences、内部/外部存储、ContentProvider等。这些机制各有优缺点,适用于不同场景的数据存储需求。 2. SQLite:Android内置了SQLite...

    解析Google Android SDK——智能手机开发范例手册-下载代码

    《解析Google Android SDK——智能手机开发范例手册》是一本深入探讨Android应用开发的书籍,它提供了丰富的实例,帮助开发者理解并掌握Android SDK的各种工具和技术。本文将基于书中的章节命名,如c3、c12等,来...

    Android开发——文件存储

    在Android开发中,文件存储是应用保存数据的一种常见方式,尤其适用于小规模、非结构化的数据,例如日程安排应用中的活动记录。本教程将详细讲解如何实现一个基于文件存储的日程安排应用。 首先,我们需要了解...

    安卓Android源码——数据的储存与读取.zip

    本资料包"安卓Android源码——数据的储存与读取.zip"可能包含了一些关于如何在Android平台上存储和检索数据的示例代码和讲解,这将帮助开发者更好地理解这一核心概念。 在Android中,有多种数据存储方式,每种都有...

    Android开发——从小工到专家(书签)

    ContentProvider用于在不同应用间共享数据,是Android四大组件之一。掌握如何创建和使用ContentProvider,能够实现跨应用的数据交换。 八、碎片(Fragment) Fragment是用于构建可重用的UI模块,尤其在多屏幕适配中...

    mars—第一季android——contentProvider

    在Android开发中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的重要角色。本教程“mars—第一季android——contentProvider”聚焦于如何利用ContentProvider来实现不同应用程序之间的数据...

    安卓Android源码——android相册系统(用Matrix实现).zip

    7. **ContentProvider**: 在Android中,ContentProvider是数据共享的接口,相册应用可以通过ContentProvider来提供对图片的访问权限,其他应用可以通过Uri查询和操作这些图片。 8. **异步处理**: 图片加载和处理...

    安卓Android源码——精典源码之便签软件.zip

    【标题】: "安卓Android源码——精典源码之便签软件.zip" 提供的是一份关于Android平台上的便签应用的源代码。这个源码可以作为一个学习Android开发、理解应用程序架构以及深入探究Android UI设计和数据持久化机制的...

    安卓Android源码——精典源码之企信通EIM.zip

    4. **ContentProvider**:如果EIM涉及到数据存储和共享,ContentProvider是Android中统一数据访问的接口,可以用来与其他应用共享数据。 5. **Intent和IntentFilter**:Intent用于启动活动、服务或广播接收器,...

    安卓Android源码——应用开发揭秘源码.zip

    《安卓Android源码——应用开发揭秘》是一本深入解析Android应用开发背后原理和技术的书籍,其源码对应压缩包提供了丰富的实践案例和详细注解,是开发者深入理解Android系统及应用开发的重要参考资料。通过分析这些...

    Android源码——备忘录源码.zip

    这份“Android源码——备忘录源码.zip”压缩包很可能包含了一个完整的备忘录应用的源代码,对于学习Android开发,特别是对UI设计、数据存储和事件处理感兴趣的开发者来说,是一个宝贵的资源。下面我们将详细探讨这个...

    安卓Android源码——通讯录的开发_完整代码.zip

    本资源"安卓Android源码——通讯录的开发_完整代码.zip"提供了一个完整的通讯录应用开发案例,可以帮助开发者深入理解Android系统中关于联系人管理的底层机制以及UI设计的实践技巧。 1. **Android源码分析** - **...

    Android源码——小米系统之便签源码.zip

    在"Android源码——小米系统之便签源码.zip"这个压缩包中,我们可能找到的是小米便签应用的源代码,这对于我们理解Android应用开发,特别是针对特定厂商定制系统的开发有着重要价值。通过分析这些源码,我们可以学习...

    安卓Android源码——精典源码之公交查询.zip

    《安卓Android源码——经典源码之公交查询》 在移动开发领域,Android操作系统占据了重要的地位,而深入理解Android源码对于开发者来说是提升技能的关键步骤。本压缩包中的源码是一个公交查询应用,旨在帮助用户...

    Android源码——WordPress for Android.zip

    在WordPress for Android中,我们可能会发现如何使用ContentProvider进行数据操作,以及如何设计数据库模型以适应动态内容的需求。 3. 用户界面:Android提供了丰富的UI组件和布局管理工具。WordPress for Android...

    安卓Android源码——安卓Android经典开发---豆瓣网移动客户端+讲解+源代码.rar

    本资料包围绕“安卓Android源码——安卓Android经典开发---豆瓣网移动客户端+讲解+源代码.rar”展开,提供了豆瓣移动客户端的源码和相关讲解,旨在帮助开发者了解并掌握Android应用的开发流程和技巧。 一、Android...

    安卓Android源码——Contacts.rar

    《安卓Android源码——Contacts详解》 在深入探讨安卓Android源码中的Contacts部分之前,我们需要先理解Contacts在安卓系统中的重要地位。Contacts是用户管理个人联系人信息的主要应用,它负责存储、显示和操作联系...

    安卓Android源码——安卓Android导入导出txt通讯录工具.rar

    这个压缩包文件“安卓Android源码——安卓Android导入导出txt通讯录工具.rar”显然提供了一个实用工具,它能够帮助用户将他们的通讯录数据在Android设备和纯文本(txt)文件之间进行转换。以下是对这一技术实现的...

Global site tag (gtag.js) - Google Analytics