Android本地存储和SharedPreferences
本地IO
Context类提供的应用内部基本文件和目录处理方法如下。
File getDir(String name, int mode) //获取/data/data/<包名>/目录的子目录(如果不存在就先创建它)。File getFilesDir() //获取/data/data/<包名>/files目录。String[] fileList() //获取主文件目录下的文件列表。可与其他方法配合使用,如openFileInput(String)。FilegetCacheDir() //获取/data/data/<包名>/cache目录。应注意及时清理该目录,并节约使用。450FileInputStream openFileInput(String name) //打开现有文件进行读取。FileOutputStream openFileOutput(String name, int mode) //打开文件进行写入,如果不存在就创建它。
又或者看下面一张图,图片来自 Holmofy的简书
使用SharedPreferences
SharedPreferences本质上就是文件系统中的文件,可使用SharedPreferences类读写它。
SharedPreferences实例用起来更像一个键值对仓库(类似于Bundle),但它可以通过持久化存储保存数据。键值对中的键为字符串,而值是原子数据类型。进一步查看shared preferences文件可知,它们实际上是一种简单的XML文件,但SharedPreferences类已屏蔽了读写文件的实现细节。sharedpreferences文件保存在应用沙盒中,所以,不应用它保存类似密码这样的敏感信息。
要获得SharedPreferences定制实例,可使用Context.getSharedPreferences (String, int)方法。然而,在实际开发中,我们并不关心SharedPreferences实例具体是什么样,只要它能共享于整个应用就可以了。这种情况下,最好使用方法:
PreferenceManager.getDefaultSharedPreferences(Context)
该方法会返回具有私有权限和默认名称的实例(仅在当前应用内可用)。
取出查询字符串值非常简单,调用SharedPreferences.getString(...)就可以了。如果是其他类型数据,就调用对应的取值方法,比如getInt(...)。第二个参数指定默认返回值
PreferenceManager.getDefaultSharedPreferences(context) .getString(PREF_SEARCH_QUERY,null);
调用SharedPreferences.edit()方法,可获取一个SharedPreferences.Editor实例。
它就是在SharedPreferences中保存查询信息要用到的类。与FragmentTransaction的使用类似,利用SharedPreferences.Editor,可将一组数据操作放入一个事务中。如有一批数据要更新,在一个事务中批量写入就可以了。
private static final String PREF_SEARCH_QUERY = "Query";
PreferenceManager.getDefaultSharedPreferences(context) .edit() .putString(PREF_SEARCH_QUERY, query) .apply();
SharedPreferences.Editor的apply()异步方法会写入数据。然后该SharedPreferences文件的其他用户就能看到写入的数据了。apply()方法首先在内存中执行数据变更,然后在后台线程上真正把数据写入文件。
更多相关文章
- 一句话锁定MySQL数据占用元凶
- AndroidManifest.xml 文件里面的内容介绍
- Android(安卓)Socket通信
- Android(安卓)9.0 sdCard文件读写
- 解决Android(安卓)应用方法数不能超过65K的问题
- android第二天早:简单工具和布局基础
- Android利用AChartEngine绘制图表
- drawable(hdpi,ldpi,mdpi)的区别
- SEAndroid安全机制框架分析