博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 数据持久化方式
阅读量:6980 次
发布时间:2019-06-27

本文共 1810 字,大约阅读时间需要 6 分钟。

hot3.png

1、 通过Context.getSharedPreferences(String fileName,int mode)方法,可以打开一个xml文件,文件的位置在/data/data/package_name/shared_prefs/fileName.xml,如果不存在,则会自动创建。可以对该文件进行读写操作,在应用内的各组件之间共享数据。如果将mode设置为Context.MODE_WORLD_READ或者Context.MODE_WORLD_WRITE,则还可以被其他应用访问到。不过这不是android推荐的方式,要实现跨应用共享数据,推荐的方式是用ContentProvider实现 

2、 如果要访问另一个应用创建的shared_prefs文件,需要满足2个条件,首先另一个应用要设置MODE_WORLD_READ或MODE_WORLD_WIRTE权限,并且要知道另一个应用的package_name,然后就可以通过Context.createPackageContext()方法,就可以得到另一个应用的context,然后context.getSharedPreferences()方法,就可以打开shared_prefs文件了。不过这种方法并不推荐 
3、 在罕见的情况下,如果既把shared_prefs的权限设置为MODE_PRIVATE,又希望某些其他的应用可以访问到,那么可以在manifest文件中配置android:user_id(好像是这个属性),让多个应用共享USER_ID。因为本质上shared_prefs文件是采用linux的权限控制的,MODE_PRIVATE类似于-rw-------,所以如果多个应用使用了同一个USER_ID,自然都对这个文件有访问权限了 
4、 除了比较方便的shared_prefs,也可以创建自定义文件,方法是Context.openFileOutput(),可以在/data/data/package_name/files/目录下创建指定的文件,除此以外,和上面提到的shared_prefs都一样。不过操作起来就复杂一些了。要读取用这种方式创建的文件,可以用Context.openFileInput()方法 
5、 此外,还可以在SD卡上操作文件,通过标准的java.io包内的API就可以。不过要注意的是,SD卡内采用的是FAT文件系统,所以不支持linux的文件读写权限控制,这点和shared_prefs与file不太一样。如果需要对文件进行读写权限控制,就不能采用写入SD卡的方式 

6、 也可以用android自带的SQLite数据库来做数据持久化,主要用到的类包括SQLiteOpenHelper和SQLiteDatabase。 

   SQLiteOpenHelper主要有onCreate()、onUpgrade()、getWritableDatabase()等方法。getWritableDatabase()方法返回的是SQLiteDatabase对象实例,如果数据库尚未创建,则会自动调用onCreate()方法来创建数据库,所以一些建表和数据初始化操作,应该放在onCreate()方法里 
   SQLiteDatabase这个类相当于JDBC中的Connection,也类似Hibernate中的Session,或者Spring中的HibernateTemplate。该对象已经对基本的数据库操作进行了封装。可以调用insert()、delete()、executeSQL()等方法,进行实际的数据库操作 
   开发的时候一般会对这2个类做一下包装,比如进行简单的封装,使SQLiteDatabase的查询方法不是返回原始的Cursor类(Cursor相当于JDBC中的ResultSet),而是返回业务对象等等 

7、 android中要实现跨应用共享数据,规范的方式是使用ContentProvider,使其他应用可以得到某个应用对外提供的数据,而不需要知道这个应用的实现细节。系统自带的provider放在android.provider包下,比如通讯录等。如果需要的话,开发者也可以提供自己的ContentProvider,这部分内容下次再单独介绍

转载于:https://my.oschina.net/u/989324/blog/110342

你可能感兴趣的文章
JavaScript-数据引用类型对象
查看>>
mysql删除开放用户权限
查看>>
17.08.17
查看>>
枚举算法
查看>>
April Fools Contest 2018
查看>>
关于flume配置加载(二)
查看>>
delphi 字符串string转流TStream
查看>>
Lync 小技巧-51-Lync 2013-不加域-客户端-1-下载-证书-信任链
查看>>
awk数组命令经典生产实战应用拓展
查看>>
配套自测连载(二)
查看>>
linux下set和eval的使用小案例精彩解答
查看>>
为什么很多人努力了却死一地
查看>>
开放产品开发(OPD):Archi 汉化工具下载
查看>>
VS code for python开发利器
查看>>
高性能的MySQL(1)锁和MVCC
查看>>
如何用VDP备份虚拟机
查看>>
虚拟机安装 Windows 10 9926 预览版 “准备就绪”...... 故障
查看>>
FTP服务器的防火墙通用设置规则
查看>>
遍历系统文本全文
查看>>
《人人都能看懂经济学》读书笔记
查看>>