首先呢是
- SharePreferences存储方式
他是种轻量级的存储方式,可以随便存点小东西,比如用户名密码什么的
用法如下
先用getSharePreferences(String name ,ine mode)获取其对象 share
- [
] 第二个参数
MODE_PRIVATE:表示私有文佳,该文件智能被创建他的文件所访问
MODE_APPEND:表示新的存储内容会添加在原有文件内容的后面。
MODE_WORLD_READABLE:表示该文件能被所有的文件读取,但是不可以写入。
MODE_WORLD_WEITABLE:表示该文件能被所有的文件写入,也可以读取
MODE_MULTI_PROCESS:表示改文件可以被多个进程同时访问,适用于Android2.3及之后的版本。
然后呢就可以开始一顿操作了
读数据
String str = share.get(key)
存数据
第二个是 LruCache内存
这个还是有点东西的,我也不是很会,反正就说说基本操作吧
int maxMemory=(int) Runtime.getRuntime().maxMemory();
int cachSize=maxMemory/8;
LruCache<String, Bitmap> lruCache=new LruCache<String, Bitmap>(cachSize){
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
};
除去准备工作之后,剩下的就是get和put键值对的故事了,跟上面的一样,很简单
好像是因为 这种内存机制的底层是LinkHashMap
- initialCapacity 用于初始化该 LinkedHashMap 的大小。
- loadFactor(负载因子)这个LinkedHashMap的父类 HashMap 里的构造参数,涉及到扩容问题,比如 HashMap
的最大容量是100,那么这里设置0.75f的话,到75的时候就会扩容。 - accessOrder,这个参数是排序模式,true表示在访问的时候进行排序( LruCache
核心工作原理就在此),false表示在插入的时才排序。
第三个是SD卡的存取
首先试用前需要在 清单文件中打上两行
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
这个比较有意思,因为很多东西需要永久的储存所以需要涉及到sd卡,
特别注意的是sd卡中的Android是内部存储,也是会随软件卸载而带走的,所以用外部存储多
先上代码再说流程
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File file = Environment.getExternalStorageDirectory();
File irs = new File(file,"\\王宇晨");
if (!irs.exists()) {
irs.mkdirs();
}
FileOutputStream fos = new FileOutputStream(new File(irs,"fear.png"));
fos.write(bytes,0,bytes.length);
fos.close();
}
最外层的判断Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED
是用来判断当前的sd卡状态,是否可用
然后通过 Environment.getExternalStorageDirectory();拿到sd卡的根目录,然后就是io的操作了就不多说了,io不行练就完了
今天的博客不知道该怎么写,感觉用着还行,没有遇到什么大问题
INTERESTING!!!