Android中存储方式有很多种,下面我给分享自己的学习总结,有错误希望大家指出,让我们一起成长:
1、使用SharedPreferences存储数据
SharedPregferences是用于存储简单的数据类型,一般用来存储应用的各种配置信息(例如:是否开启音效,是否开启震动功能等),一些简单应用密码等等。使用SharedPreferences保存的文件在/data/data/<应用包名>/shared_prefs目录下,使用Eclipse或者AS可以使用DDMS下面看该目录下文件。可以通过2种方式生成SharePregferences对象:
a、在Fragment中使用SharePreferences
SharedPreferences sp=getActivity().getSharePreferences(name,Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sp.edit();
b、在Activity中使用SharePreferences
SharePreferences sp=getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sp.edit();
这2种方式,我希望大家可以试试,第二种方式我也是在官网上看到的,一开始一直都是使用的第一种方式,强烈建议大家使用第二种方式试试,因为在这种没有给出需要操作的xml文件name的时候,系统会自动生成一个xml?还是什么情况,在这里我就不给出大家答案,希望大家都动手做做,毕竟凭YY的话,我也能变成刘德华。
使用getSharePreferences(String name,int mode),第一个参数为你要对应操作的xml文件,第二参数为该xml文件的读取模式,有三种:
Context.MODE_PRIVATE:指定该SharePreferences数据只能被本应用读、写;
Context.MODE_WORLD_READABLE:指定该SharePreferences数据可以被其他应用读,但不能写。
Context.MODE_WORLD_WRITEABLE:指定该SharePreferences数据可以被其他应用读、写。
Editor的几个方法:
SharedPreferences.Editor clear():清空SharedPreferences里所有数据
SharedPreferences.Editor putXxx(String key , xxx value):向SharedPreferences存入指定key对应的数据,其中xxx 可以是boolean,float,int等各种基本类型据
SharedPreferences.Editor remove():删除SharedPreferences中指定key对应的数据项
boolean commit():当Editor编辑完成后,使用该方法提交修改
下面给出一个栗子:
先看布局,布局代码过于简单就不给出来了:
源码:
privateTextViewtextView;
privateButtongetKeyWorld;
privateButtonsetKeyWorld;
privateEditTexteditText;
privateButtontest;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
private voidinitViews() {
textView= (TextView) findViewById(R.id.textView);
getKeyWorld= (Button) findViewById(R.id.get_keyword);
setKeyWorld= (Button) findViewById(R.id.set_keyword);
editText= (EditText) findViewById(R.id.keyword);
test= (Button) findViewById(R.id.test);
getKeyWorld.setOnClickListener(this);
setKeyWorld.setOnClickListener(this);
test.setOnClickListener(this);
}
@Override
public voidonClick(View v) {
switch(v.getId()){
caseR.id.set_keyword:
String code=editText.getText().toString().trim();
//创建SharePreferences.Editor接口对象,“mx”表示要写入xml文件名,
SharedPreferences.Editor editor=getSharedPreferences("mx",MODE_ENABLE_WRITE_AHEAD_LOGGING).edit();
//将获过来的值以键值对的方式放入到文件中
editor.putString("code",code);
editor.commit();
Toast.makeText(this,"文件存储成功!",Toast.LENGTH_SHORT).show();
editor.clear();
break;
caseR.id.get_keyword:
//创建一个SharePreferences接口的对象,
SharedPreferences read=getSharedPreferences("mx",MODE_ENABLE_WRITE_AHEAD_LOGGING);
//根据键获取文件中的值
String value=read.getString("code","");
Toast.makeText(this,"密码为:"+value,Toast.LENGTH_SHORT).show();
break;
caseR.id.test:
SharedPreferences sp=getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor1=sp.edit();
editor1.putString("test","value");
editor1.commit();
editor1.clear();
Log.i("xyz","..."+sp.getString("test","default"));
Toast.makeText(MainActivity.this,"请看Log!",Toast.LENGTH_SHORT).show();
break;
}
}
还是说一下getPreferences(int mode)方法操作的xml吧。。。真是惆怅!