android下数据存储的几种方式:(简单讨论)
1.文件
举例:登陆时“记住密码”
因为是基于Linux系统,直接建文件,文件会出现在项目工程;而手机登陆时,应该把文件放在手机里,通常数据放在data/data/包名/info.txt
方便的API:
context:上下文环境
context.getFilesDir(); // data/data/<包名>/files/
context.getCacheDir(); // data/data/<包名>/cache/
context.openFileInput("info.txt");相当于 //快速得到输入流
File filedir = context.getFileDir();
File file = new File(filedir,"info.txt");
FileInputStream fis = new FileInputStream(file);
context.openFileOutput("info.txt",mode); //快速得到输出流
参数mode有多种固定的取值:WorldReadable....
Linux下的文件模式:“-”表示文件,“d"表示目录
”- rw- --- --- “:
rw-:表示当前用户文件的访问权,第三个参数表示文件是否可执行
后面两个”---“:分别代表当前用户所在组权限和其他用户权限,参数也可为”r--,rw-...."
linux命令行下可用chmod+“666”+文件名 改变其访问权,“666”代表:“- rw- (110,7) rw-(110,7) rw-(110,7)”
在Android下,默认情况每个App都是一个单独的用户,具有自己特有的用户ID,可以说每个App都是一个安全沙箱,可以通过设置,是否暴露它拥有的文件信息
把文件放在SD卡:(获取SD卡所在目录)
需要在manifest.xml文件中配置SD卡的写权限
方法在Environment.getExternalStorageState();
...
不管把文件放在手机本身还是SD卡,首先要检查存储空间是否足够放你所要存的文件?(系统自带有获取剩余空间的功能,直接参考源代码(Eclipse里利用ctrl+H逐步搜系统应用的关键字符串))
2.SharedPreference(参数)
实现定时的数据更新,保存内容,如网页上5s更新一次
Timer,TimerTask (重写run方法),Timer.schedule
this.getSharedPreferences(); Editor SharedPreferences.edit();
editor.putString();editor.getString();...
SharedPreference通过把数据存到一个新建的xml文件中来保存数据内容,类似涉及文件的I/O操作
(待续...)
3.SQLite数据库
1)写一个数据库打开的帮助类,继承sqliteOpenHelper
2)重写帮助类的oncreate方法,数据库表结构的初始化
3)利用OpenHelper得到数据库,执行SQL语句
4.内容提供者Content provider
5.网络