Android开发中如何实现数据存储
这篇文章将为大家详细讲解有关Android开发中如何实现数据存储,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在石楼等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、网站建设 网站设计制作专业公司,公司网站建设,企业网站建设,成都品牌网站建设,全网营销推广,外贸网站制作,石楼网站建设费用合理。
在Android中,可以使用几种方式实现数据持久化:
Shared Preferences:共享参数形式,一种以Key-Value的键值对形式保存数据的方式,Android内置的,一般应用的配置信息,推荐使用此种方式保存。
Internal Storage:使用Android设备自带的内存存储数据。
External Storage:使用外部存储设备存储数据,一般是指Sdcard。
SQLite Databases:以SQLite数据库存储结构化的数据。
SharedPreferences
也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
赋值:
putBoolean(KEY_SHOW_DIALOG_AT_START, false)
取值:
getBoolean(KEY_SHOW_DIALOG_AT_START,false);
SharedPreferences案例分析:
加进一检查框
android:id="@+id/cbSent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="60dp" android:text="测试语句"/> 定义三变量 privateCheckBox cbSent; privateSharedPreferences sp; privatestaticfinalString KEY_SHOW_DIALOG_AT_START = "showDialog"; onCreate中添加 sp = getSharedPreferences("mysp", Context.MODE_PRIVATE); cb = (CheckBox) findViewById(R.id.cb); cb.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() { @Override publicvoidonCheckedChanged(CompoundButton buttonView, booleanisChecked) { Editor e = sp.edit(); e.putBoolean(KEY_SHOW_DIALOG_AT_START, isChecked); e.commit(); } }); cb.setChecked(sp.getBoolean(KEY_SHOW_DIALOG_AT_START, false)); if(cb.isChecked()) { newAlertDialog.Builder(this).setTitle("标题").setMessage("显示语句么?").setPositiveButton("关闭", null).show(); } 内部存储 Internal Storage 内部存储,在Android中,开发者可以直接使用设备的内部存储器中保存文件,默认情况下,以这种方式保存的和数据是只能被当前程序访问,在其他程序中是无法访问到的,而当用户卸载该程序的时候,这些文件也会随之被删除。 使用内部存储保存数据的方式,基本上也是先获得一个文件的输出流,然后以write()的方式把待写入的信息写入到这个输出流中,最后关闭流即可,这些都是Java中IO流的操作。具体步骤如下: 使用Context.openFileOutput()方法获取到一个FileOutputStream对象。 把待写入的内容通过write()方法写入到FileOutputStream对象中。 最后使用close()关闭流。 上面介绍的Context.openFileOutput()方法有两个重载函数,它们的签名分别是: FileOutputStream openFileOutput(Stringname):以MODE_PRIVATE的模式打开name文件。 FileOutputStream openFileOutput(Stringname,int mode):以mode的模式打开name文件。 上面第二个重载函数中,mode为一个int类型的数据,这个一般使用Context对象中设置好的常量参数,有如下几个: MODE_APPEND:以追加的方式打开一个文件,使用此模式写入的内容均追加在原本内容的后面。 MODE_PRIVATE:私有模式(默认),如果文件已经存在会重新创建并替换原文件,如果不存在直接创建。 MODE_WORLD_READABLE:以只读的方式打开文件。 MODE_WORLD_WRITEABLE:以只写的方式打开文件。 还有几个方法需要特别注意一下,这几个方法对于文件关系提供了更好的支持,配合上面介绍的方式,就可以对文件的数据进行常规的CRUD操作(增删改查),方法如下: File getFIlesDir():获取文件系统的绝对路径。 boolean deleteFile(String name):删除一个指定文件名为name的文件。 String[] fileList():当前应用内部存储路径下的所有文件名。 Internal Storage案例分析: 1)加进编辑和命令按钮 android:gravity="top" android:id="@+id/et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/>