一、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: });
如上代码,在任何应用任何地方,执行以上代码,结果都是一样的,就是现实联系人列表,如下图:
我们创建的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"的内容涵盖了SQLite在Android中的使用、数据库的创建与管理、SQL操作、事务处理、性能优化等方面的知识,对于深入理解Android应用的数据存储机制具有很高的学习价值。
1. 数据存储机制:Android提供了多种数据存储方式,如SQLite数据库、SharedPreferences、内部/外部存储、ContentProvider等。这些机制各有优缺点,适用于不同场景的数据存储需求。 2. SQLite:Android内置了SQLite...
《解析Google Android SDK——智能手机开发范例手册》是一本深入探讨Android应用开发的书籍,它提供了丰富的实例,帮助开发者理解并掌握Android SDK的各种工具和技术。本文将基于书中的章节命名,如c3、c12等,来...
在Android开发中,文件存储是应用保存数据的一种常见方式,尤其适用于小规模、非结构化的数据,例如日程安排应用中的活动记录。本教程将详细讲解如何实现一个基于文件存储的日程安排应用。 首先,我们需要了解...
本资料包"安卓Android源码——数据的储存与读取.zip"可能包含了一些关于如何在Android平台上存储和检索数据的示例代码和讲解,这将帮助开发者更好地理解这一核心概念。 在Android中,有多种数据存储方式,每种都有...
ContentProvider用于在不同应用间共享数据,是Android四大组件之一。掌握如何创建和使用ContentProvider,能够实现跨应用的数据交换。 八、碎片(Fragment) Fragment是用于构建可重用的UI模块,尤其在多屏幕适配中...
在Android开发中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的重要角色。本教程“mars—第一季android——contentProvider”聚焦于如何利用ContentProvider来实现不同应用程序之间的数据...
7. **ContentProvider**: 在Android中,ContentProvider是数据共享的接口,相册应用可以通过ContentProvider来提供对图片的访问权限,其他应用可以通过Uri查询和操作这些图片。 8. **异步处理**: 图片加载和处理...
【标题】: "安卓Android源码——精典源码之便签软件.zip" 提供的是一份关于Android平台上的便签应用的源代码。这个源码可以作为一个学习Android开发、理解应用程序架构以及深入探究Android UI设计和数据持久化机制的...
4. **ContentProvider**:如果EIM涉及到数据存储和共享,ContentProvider是Android中统一数据访问的接口,可以用来与其他应用共享数据。 5. **Intent和IntentFilter**:Intent用于启动活动、服务或广播接收器,...
《安卓Android源码——应用开发揭秘》是一本深入解析Android应用开发背后原理和技术的书籍,其源码对应压缩包提供了丰富的实践案例和详细注解,是开发者深入理解Android系统及应用开发的重要参考资料。通过分析这些...
这份“Android源码——备忘录源码.zip”压缩包很可能包含了一个完整的备忘录应用的源代码,对于学习Android开发,特别是对UI设计、数据存储和事件处理感兴趣的开发者来说,是一个宝贵的资源。下面我们将详细探讨这个...
本资源"安卓Android源码——通讯录的开发_完整代码.zip"提供了一个完整的通讯录应用开发案例,可以帮助开发者深入理解Android系统中关于联系人管理的底层机制以及UI设计的实践技巧。 1. **Android源码分析** - **...
在"Android源码——小米系统之便签源码.zip"这个压缩包中,我们可能找到的是小米便签应用的源代码,这对于我们理解Android应用开发,特别是针对特定厂商定制系统的开发有着重要价值。通过分析这些源码,我们可以学习...
《安卓Android源码——经典源码之公交查询》 在移动开发领域,Android操作系统占据了重要的地位,而深入理解Android源码对于开发者来说是提升技能的关键步骤。本压缩包中的源码是一个公交查询应用,旨在帮助用户...
在WordPress for Android中,我们可能会发现如何使用ContentProvider进行数据操作,以及如何设计数据库模型以适应动态内容的需求。 3. 用户界面:Android提供了丰富的UI组件和布局管理工具。WordPress for Android...
本资料包围绕“安卓Android源码——安卓Android经典开发---豆瓣网移动客户端+讲解+源代码.rar”展开,提供了豆瓣移动客户端的源码和相关讲解,旨在帮助开发者了解并掌握Android应用的开发流程和技巧。 一、Android...
《安卓Android源码——Contacts详解》 在深入探讨安卓Android源码中的Contacts部分之前,我们需要先理解Contacts在安卓系统中的重要地位。Contacts是用户管理个人联系人信息的主要应用,它负责存储、显示和操作联系...
这个压缩包文件“安卓Android源码——安卓Android导入导出txt通讯录工具.rar”显然提供了一个实用工具,它能够帮助用户将他们的通讯录数据在Android设备和纯文本(txt)文件之间进行转换。以下是对这一技术实现的...