Android数据存储(总结篇)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

By: 海市蜃楼

在前面的2篇文章:Android SQLite解析Android 应用程序之间数据共享中分别详细说明了,如何使用数据库存储信息,以及如何通过ContentProvider获取其他应用程序共享的数据,现将Android数据存储做下总结,在以后的开发过程中根据需求选择合适的数据存储方式。

Android提供了5种方式存储数据:

  1. 使用SharedPreferences存储数据;
  2. 文件存储数据;
  3. SQLite数据库存储数据;
  4. 使用ContentProvider存储数据;
  5. 网络存储数据;

其中3,4已经在Android SQLite解析、Android 应用程序之间数据共享篇幅中详细说明,不在此重复说明,现将其他3种方式详细介绍。

使用SharedPreferences存储数据

首先说明SharedPreferences存储方式,它是Android提供的用来存储一些简单配置信息的一种机制,例如:登录用户的用户名与密码。其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入,具体实例如下:

void  ReadSharedPreferences()
{
String  strName,strPassword;
SharedPreferences   user = getSharedPreferences(“user_info”,0);
strName = user.getString(“NAME”,””);
strPassword = user getString(“PASSWORD”,””);
}

void  WriteSharedPreferences(String  strName,String strPassword)
{
SharedPreferences   user = getSharedPreferences(“user_info”,0);
uer.edit();
user.putString(“NAME”, strName);
user.putString(“PASSWORD” ,strPassword);
user.commit();
}

数据读取与写入的方法都非常简单,只是在写入的时候有些区别:先调用edit()使其处于编辑状态,然后才能修改数据,最后使用commit()提交修改的数据。实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。以上面的数据存储结果为例,打开后可以看到一个user_info.xml的文件,打开后可以看到:
<?xml version=”1.0″ encoding=”UTF-8″?>
<map>
<string name=”NAME”>moandroid</string>
<string name=” PASSWORD”>SharedPreferences</string>
</map>
使用SharedPreferences是有些限制的:只能在同一个包内使用,不能在不同的包之间使用。

文件存储数据

文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。FilterInputStreamFilterOutputStream等可以到Java  io  package说明中去详细学习,不再此详细说明,具体实例如下:
String fn = “moandroid.log”;
FileInputStream fis = openFileInput(fn);
FileOutputStream fos = openFileOutput(fn,Context.MODE_PRIVATE);
除此之外,Android还提供了其他函数来操作文件,详细说明请阅读Android SDK

网络存储数据

网络存储方式,需要与Android 网络数据包打交道,关于Android 网络数据包的详细说明,请阅读Android SDK引用了Java SDK的哪些package?

总结说明

以上5中存储方式,在以后的开发过程中,根据设计目标、性能需求、空间需求等找到合适的数据存储方式。Android 中的数据存储都是私有的,其他应用程序都是无法访问的,除非通过ContentResolver获取其他程序共享的数据

上海建桥学院-移动应用开发-实验报告3-Android数据存储 实验Android数据存储 一、实验目的及要求 (1) 掌握Android的SharedPreferences的使用 (2) 掌握在Android中使用SQLite的方法 二、实验内容及步骤 任务:根据下述要求实现对应程序 1、 根据所给界面1完成登入功能,用户名为admin,密码为123456,如果用户名和密码不是admin和123456,则使用Toast提示“用户名或密码错误”,如果是则在checkbox选中的情况下,将用户名和密码保存,当此Activity再次启动时,将已保存的数据显示到界面中,实现记住密码功能。 2、 根据图2来实现功能,启动界面有两个按钮,当点击创建按钮,需要创建一个数据库(数据库名为姓名拼音+学号),创建完数据库的同时创建student表,并往表中插入三条数据(表结构:StuNo(主键)、StuName(姓名)、Score(成绩)、ClassName(班级))。当点击查询按钮时,如图所示,将查询结果在ListView中显示。 立即下载

相关推荐

实验10-Android数据存储和IO.doc

实验报告封面 课程名称: Android平台开发与应用 课程代码: SM3004 任课老师: 梁郁君 实验指导老师: 梁郁君 实验报告名称:实验10 Android数据存储与IO 学生姓名: 学号: 教学班: 递交日期: 签收人: 我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行 为。我已经保留了这份实验报告的副本。 申明人(签名): 实验报告评语与评分: 评阅老师签名: 一、实验名称:Android数据存储与IO 二、实验日期:2014/11/13 三、实验目的: 1、掌握SharedPreferences的存储数据的格式及位置,能够读写其他应用程序的Shared Preferences。 2、File存储数据 3、掌握SQLite存储数据方法。 4、会使用SQLiteOpenHelper辅助类,进行操作数据库。 四、实验用的仪器和材料: PC+Eclipse+ADT 五、实验的步骤和方法: 1、读写其他应用程序SharedPreferences。 读写其他应用程序的SharedPreferences,步骤如下: 创建应用App1 和应用App2,App2尝试读取App1的SharedPreferences内容 在App2 需要创建App1对应的Context。 调用App1的Context的getSharedPreferences(String name,int mode) 即可获取相应的SharedPreferences对象。 如果需要向App1的SharedPreferences数据写入数据,调用SharedPreferences的e dit()方法获取相应的Editor即可。 根据上述说明和下面截图,以及代码注释,完成相关代码片段填空,并思考问题: SharedPreferences何时会丢失? 图1 App1运行的界面 图2 App2 运行结果 App1:记录应用程序的使用次数,/com.Test/UseCount.java程序如下,补充程序中所缺 代码: "import android.app.Activity; " "import android.content.SharedPreferences; " "import android.content.SharedPreferences.Editor; " "import android.os.Bundle; " "import android.widget.Toast; " "public class UseCount extends Activity{ " "SharedPreferences preferences; " "@Override " "public void onCreate(Bundle savedInstanceState){ " "super.onCreate(savedInstanceState); " "setContentView(R.layout.main); " "preferences = getSharedPreferences("count", MODE_WORLD_READABLE); " "//读取SharedPreferences里的count数据 " "int count = ("count" , 0); " "//显示程序以前使用的次数 " "Toast.makeText(this , "程序以前被使用了" + count + "次。", " "10000).show(); " "Editor editor = ; " "//存入数据 " "editor.putInt("count" , ++count); " "//提交修改 " "editor. ; " "} " "} " App2:ReadOtherPreferences.java代码如下,补充程序所缺代码: "import android.app.Activity; " "import android.content.Context; " "import android.content.SharedPreferences; " "import " "android.content.pm.PackageManager.NameNotFoundException; " "import android.os.Bundle; " "import android.widget.TextView; " "public class ReadOtherPreferences extends Activity{ " "Context useCount; " "@Override " "public void onCreate(Bundle sav

《黑马程序员Android移动应用基础教程》学习笔记(5)

数据存储

qq_46879529的博客 2052

南邮Android实验报告一:安卓数据存取

南邮Android实验报告一:安卓数据存取

weixin_45700663的博客 3280

【安卓开发】数据存储

三种数据持久化方式:文件存储、SharedPreference存储以及数据库存储,除此之外还可以存储在SD卡中(不安全)

Godam 817

Android数据存储总结

Android面试之数据存储1. 描述一下Android数据持久存储方式?2. SharedPreferences的应用场景?注意事项?3. SharedPrefrences的apply和commit有什么区别?4. 了解SQLite中的事务操作吗?是如何做的?5. 使用SQLite做批量操作有什么好的方法吗?6. 如何删除SQLite中表的个别字段7. 使用SQLite时会有哪些优化操作? 1. 描述一下Android数据持久存储方式? Android 平台实现数据持久存储的常见几种方式: Share

是非的Android学习之路 482

android数据存储——SqliteDatabase

在安卓系统内部存在着sqlitedatabase数据库。可以将app的一些默认数据,比如app的默认设置。账号信息。消息记录等,以数据库的形式保存在手机内存上。而保存的目录为系统根目录/data/data/包名/数据库名。下面开始讲解其中的主要类怎么使用。SQLiteOpenHelper: SQLiteOpenHelper是SQLitedatabase的辅助类。用来初始化数据库连接。SQLiteD

qq_32062359的博客 491

Android基础 Android 数据存储与性能

最近到了一家公司,跟一个同事做项目,比如常规的一些操作用SharedPreferences就很好搞定,他跟我说SharedPreferences 会影响性能说了一堆... 难道别的存储方式就不耗费性能吗?不消耗内存吗?

Xia_燚的博客 796

Android基础 Android 数据存储与性能

Android基础 Android 数据存储与性能

qq_43966957的博客 275

Android——数据存储(1)

今天看了一下android数据存储android数据存储主要有三种方式: 1、普通的文件存储。   关于普通的文件存储android的Context类有一个openFileOutput()方法来返回一个FileOutPutStream对象,通过这个对象,就可以使用java流的方式来将数据写入到文件中。它主要利用的还是java的流思想,这里我就不深入讲解了。 2.Shared...

Ziling89757的博客 92

安卓开发从零开始第7——ADB的命令行使用——查看Android studio的Demo文件数据存储Sqlite

转自:http://blog.csdn.net/sinat_38321889/article/details/72823042 今天在使用Android studio中做sqlite数据库的使用时,为了证明数据库的创建成果,而在Android Device Monitor的File Explore中始终找不到对应的包名,只好使用命令行的adb工具;adb是Android sdk自带的调试工具,它

mumushuiding的博客 442
上一篇: Android 应用程序之间数据共享—ContentResolver
下一篇: [转]Android之父深入解析Android
Linux先生
博客等级 码龄20年 97粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值