先介绍下缓存框架ASimpleCache
ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。
1、可以缓存什么
普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。
2、有何优点?
1:轻,轻到只有一个JAVA文件。
2:可配置,可以配置缓存路径,缓存大小,缓存数量等。
3:可以设置缓存超时时间,缓存超时自动失效,并被删除。
4:支持多进程。
3、使用场景?
1、替换SharePreference当做配置文件
2、可以缓存网络请求数据,比如oschina的android客户端可以缓存http请求的新闻内容,缓存时间假设为1个小时,超时后自动失效,让客户端重新请求新的数据,减少客户端流量,同时减少服务器并发量。
4、如何使用
/* 新建ACache对象,保存数据(键值和数据类型) */
ACache aCache = ACache.get(this);
aCache.put("ACache", "我是achche数据缓存");
// 保存10秒,如果超过10秒去获取这个key,将为null
aCache.put("ACacheTime", "我是achche数据缓存", 10);
/* 新建ACache对象,根据键值获取数据 */
ACache aCache = ACache.get(this);
String asString = aCache.getAsString("ACache");
DEMO效果如下:
以上大概介绍了缓存框架ASimple Cached
接下来介绍SharePreference的使用
Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下
/* 新建sp对象,保存数据(键值和数据类型) */
SharedPreferences sp = getSharedPreferences("sp", Context.MODE_PRIVATE);
Editor edit = sp.edit();//获得编辑器
edit.putString("sp", "我是sp数据缓存");
edit.commit();//一定记得提交
该xml中生成的内容代码如下
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="sp">我是sp数据缓存</string>
</map>
获取数据
/* 新建sp对象,根据键值获取数据 */
SharedPreferences sp = getSharedPreferences("sp", Context.MODE_PRIVATE);
String string = sp.getString("sp", "该参数为默认值");
发现两种写法很像,sp是把数据保存在xml中,然后再去读取,两者都可以跨进程,但是sp跨进程要注意文件的权限。在getSharePreferences(指定该文件的名称,指定该文件的操作模式)方法中参数二有四种模式
四种操作模式分别为:
1. MODE_APPEND: 追加方式存储
2. MODE_PRIVATE: 私有方式存储,其他应用无法访问
3. MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取
4. MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入
5. MODE_MULTI_PROCESS: 适用于多进程访问(目前已被废弃,google官方推荐使用ContentProvider来实现进程间共享访问)
也就是说如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
那要怎么删除通过SharedPreferences产生的文件,可以通过以下方法:
File file= new File("/data/data/"+getPackageName().toString()+"/shared_prefs","sp.xml");//这里sp为xml文件名
if(file.exists())
{
file.delete();
Toast.makeText(TestActivity.this, "删除成功",Toast.LENGTH_LONG).show();
}
两者的大致使用就是这样,后面如果有
更深层次的东西我会写出来