`
kaozjlin
  • 浏览: 115571 次
  • 性别: 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开发入门与实战(下)

    第8章 移动信息仓库——Android的数据存储操作 8.1 Android数据存储概述 8.2 轻轻地我保护——SharedPreferences存储 8.3 谁的文件,谁主宰——文件存储 8.4 打造自己的数据库存储——SQLite存储方式 8.4.1 Android...

    android开发入门与实战(上)

    第8章 移动信息仓库——Android的数据存储操作 8.1 Android数据存储概述 8.2 轻轻地我保护——SharedPreferences存储 8.3 谁的文件,谁主宰——文件存储 8.4 打造自己的数据库存储——SQLite存储方式 8.4.1 Android...

    《Google Android开发入门与实战》.pdf

    第8章 移动信息仓库——android的数据存储操作 136 8.1 android数据存储概述 136 8.2 轻轻地我保护——sharedpreferences存储 136 8.3 谁的文件,谁主宰——文件存储 140 8.4 打造自己的数据库存储——...

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    第1章 新一代的王者——android概览 1 1.1 智能手机市场现状 1 1.1.1 五大智能手机操作系统 1 1.1.2 智能手机市场的新星 2 1.2 android平台的特点及未来的趋势 3 1.2.1 全新理念带来的体验风暴 3 ...

    Google.Android开发入门与实战

    第8章 移动信息仓库——Android的数据存储操作 8.1 Android数据存储概述 8.2 轻轻地我保护——SharedPreferences存储 8.3 谁的文件,谁主宰——文件存储 8.4 打造自己的数据库存储——SQLite存储方式 8.4.1 Android...

    Google Android开发入门与实战的代码

    第8章 移动信息仓库——Android的数据存储操作 136 8.1 Android数据存储概述 136 8.2 轻轻地我保护——SharedPreferences存储 136 8.3 谁的文件,谁主宰——文件存储 140 8.4 打造自己的数据库存储——...

    android应用安全——数据安全

    数据安全包含数据库数据安全、SD卡数据(外部存储)安全、RAM数据(内部存储)安全。android中操作数据库可使用SQLiteOpenHelper或ContentProvider的方式。  数据安全包含数据库数据安全、SD卡数据(外部存储)安全、RAM...

    安卓开发实验6——SQLite和SQLiteDatabase应用

    课堂作业实验6源码。利用android的内置数据库SQLite存储新闻信息,用listview组件以列表形式显示新闻内容,

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    Android应用开发详解pdf.pdf

     第2章 Android开发基础Android开发基础,讲述了Android开发环境的搭建、Android常用工具的使用和第一个Android应用程序的开发  第二篇 技术篇第3章 Android中的资源访问Android 中的资源访问,讲述了如何定义和...

    Android典型技术模块开发详解

    第1章 Android初识 1.1 Android简介 1.1.1 认识Android 1.1.2 Android系统框架 1.1.3 应用程序框架 1.2 Eclipse开发环境 1.2.1 安装ADT插件 1.2.2 安装SDK 1.2.3 配置源代码 1.2.4 创建AVD 1.3 Android模拟器 1.3.1 ...

    Android程序设计基础

    本书是一部关于 android开发的基础教程,采用由浅入深、循序渐进的方式讨论android。书中还结合数独游戏等实例更加形象生动地讲解了 android开发的基本流程,且每章最后都有一个 “快速阅读指南 ”,更加方便了读者...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--view中的tag用法之存储对象 |--view常用属性 |--xml常用属性 |--xml文件的pull解析与序列化写入 |--xml的封装序列化 |--任务循环之只在Activity显示时执行 |--修改文件的最后修改时间 |--偏好设置(回显) |--内存...

    Android学习之文件存储读取

    本节给大家介绍的是Android数据存储与访问方式中的一个——文件存储与读写,当然除了这种方式外,我们可以存到SharedPreference,数据库, 或者ContentProvider中,当然这些后面都会讲,嗯,开始本文内容~

Global site tag (gtag.js) - Google Analytics