Android 当中实现数据存储,总结一下可以有四种方式惊醒实现:
一、通过SharedPreferences+Editor实现存储
在Android开发过程中有时一些应用要用到少量简单的数据的存储,直接使用数据库有不是很方便,这是我们可以用到SharedPreferences + Editor 的方式进行存储简单方便。一般来说SharedPreferences 所存储的数据都是类似一些数据信息格式的数据(有点类似于Windows中的ini文件),以Key-Value 的形式进行存储。其保存的是一个xml文件。下面介绍一些常用到的方法
SharedPrefarenced:
getXXX(String key ,XXX defValue)用来从数据库当中取得数据。
abstract Map<String ,?>getAll()得到全部的key-Value的数据
edit() 得到Editor对象才能进行数据的存储
Editor
putXXX(String key,xxx Value)向其中存储数据
commit()提交 (一定要记得提交保存)
remove(String key)删除键值对
SharedPreference的几个参数:
Context.MODE_PRIVATE:指定SharedPreference的数据只能被本应用读写
Context.MODE_WORLD_READABLE:指定SharedPreference的数据被本其他应用读
context.MODE_WORLD_WRITEABLE:指定SharedPreference的数据被本其他应用写
写一个Demo:
public void onClick(View view){
SharedPreferences preferences = getSharedPreferences("smma", Context.MODE_PRIVATE);
Editor edit = preferences.edit();
if(view.getId()==R.id.query){
String time = preferences.getString("time", null);
showView.setText("当前时间:"+time);
}else if (view.getId()== R.id.save) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
edit.putString("time", sdf.format(new Date()));
//一定记得提交
edit.commit();
}
}
二、通过IO流(openFileInput 、openFileOutput)保存到SD卡
JavaSE有一套完整的IO流体系,Android中也可以通过这一系列的IO流来操作系统中的文件。Context提供了FileInputStream openFileInput(String fileName)以及FileOutputStream openFileOutput(String fielName,int mode)来获得操作文件的IO流。其中得到输出流的参数有如下几种形式:
MODE_PRIVATE:该文件只能被当前程序写
MODE_APPEND:以追加的方式打开文件,应用程序可以向该文件中追加内容
MODE_WORLD_READABLE:该文件的内容可以被其他的程序读
MODE_WORLD_WRITEABLE:该文件的内容可以被其他的程序读写.
Android因为是手机平板系统其还有一个特殊之处,在于其能支持SD卡,下面介绍一下操作SD卡的步骤:
1、调用Environment.getExternalStorageState()判断手机上是否插入了SD卡,并且引用程序具有读写SD卡的权限。
2、调用Environment.getExternalStorageDirectory()获得外部存储器。
3、使用IO流操作文件。
当然最重要的要记得在配置文件AndroidManifest.xml中添加权限
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
写一个简单的DEMO:
三、通过sql保存包Android自带的SqLiteDatabase数据库
Android自带了一个SQLite数据库(类似与微软的ACESS)本质上是一种便捷的文件操作。Android 还有一个ORM框架ormlite后面将结合框架讲解SQLite数据库以及数据持久化操作。
四、通过Android四大组件之一的ContentProvider进行保存
ContentProvider 是Android提供的四大组件之一。专门用来操作数据。