下面将介绍下Android的数据存储,Android提供了5种方式存储数据:
1.SharedPreferences存储数据;
2.文件存储数据;
3.SQLite数据库存储数据;
4.使用ContentProvider存储数据;
5. 网络存储数据;


今天我先介绍下最简单的SharedPreferences存储数据;

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?

SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android最 终是以xml方式来保存(在Android系统中,这些信息以XML文件的形式保存在/data/data/PACKAGE_NAME /shared_prefs 目录下。),整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。


用于访问和修改getSharedPreferences(String, int)返回的preference data的一个接口。对于任何一组特殊的preferences,所有的客户端共享一个此类单独的实例。

修改Preferences必须通过一个SharedPreferences.Editor对象,以确保当他们提交存储数据的操作时,preference值保持一致的状态。

注意:

1》当前此类不支持多线程访问。

2》使用SharedPreferences是有些限制的:只能在同一个包内使用,不能在不同的包之间使用。


SharedPreferences的步骤:

1.Call edit() to get a SharedPreferences.Editor.
2.Add values with methods such as putBoolean() and putString().
3.Commit the new values with commit()


上代码:

public class SharedPreferencesActivity extends Activity{private final static String SETTING = "potato";private Button mBtnSave;private Button mBtnShow;private EditText mEditViewName;private EditText mEditViewAge;private TextView mTextViewResult; /** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mBtnSave = (Button) findViewById(R.id.btnSave);mBtnShow = (Button) findViewById(R.id.btnShow);mEditViewName = (EditText) findViewById(R.id.editName);mEditViewAge = (EditText) findViewById(R.id.editAge);mTextViewResult = (TextView)findViewById(R.id.txtResult);mBtnSave.setOnClickListener(listener);mBtnShow.setOnClickListener(listener);}/** * 事件监听器 */private OnClickListener listener = new OnClickListener(){@Overridepublic void onClick(View v){SharedPreferences pres = SharedPreferencesActivity.this.                          // 注1getSharedPreferences(SETTING, Context.MODE_PRIVATE);switch (v.getId()){// 保存数据case R.id.btnSave:Editor editor = pres.edit();                                                    // 注2editor.putString("name", mEditViewName.getText().toString());editor.putInt("age", Integer.valueOf(mEditViewAge.getText().toString()));editor.commit();Toast.makeText(SharedPreferencesActivity.this, "保存成功", Toast.LENGTH_LONG).show();break;// 显示数据case R.id.btnShow:String name = pres.getString("name", "NO");                                      // 注3int age = pres.getInt("age", 0);String bir = pres.getString("bir", "NO");mTextViewResult.setText("Name="+name+";age="+age+";bir="+bir);break;}}};}

注1:

SharedPreferences pres = SharedPreferencesActivity.this.                          // 注1getSharedPreferences(SETTING, Context.MODE_PRIVATE);
通过名称,得到一个SharedPreferences,顾名思义,这个Preferences是共享的,共享的范围据现在同一个Package中,这里 面说所的Package和Java里面的那个Package不同,貌似这里面的Package是指在AndroidManifest.xml文件中的Package属性值。

第二参数:

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。


注2:

注3:

存储和取值的过程这有点像HashMap但是比HashMap更具人性化,getXXX(Object key,Object defualtReturnValue),

第二个参数是当你所要的key对应没有时候返回的值(所谓的默认值)。这就省去了很多逻辑判断。。。。

editor.commit();这个一定要调用,因为这样才能提交修改的内容,否则如果赋值过程中数据类型错误,抛出异常,那就数据就不保存了,但是有了commit(),就不会出现这样问题。。。。


有问题请留言。。。。。


更多相关文章

  1. android保存手势操作到文件&读取识别手势
  2. Android数据绑定Data Binding初体验
  3. Android 绑定数据到界面控件
  4. Android使用AIDL跨进程数据共享
  5. Android 传感器的 数据流和框架
  6. Android listview中嵌套Checkbox的布局文件
  7. Android 数据操作之SQLiteDatabase
  8. 获取PCM音频数据的声音分贝值
  9. android studio导入 so ,jar 文件。

随机推荐

  1. 【Android基础】Android开发键盘把底部导
  2. [android]数组资源
  3. SlidingMenu库的导入以及Jar mismatch问
  4. ProGuard详解
  5. curl在Android中使用的Demo
  6. Android(安卓)高斯算法在"在路上"APP 的
  7. Kotlin Android入门教程
  8. Android中TabLayout使用详解
  9. android 自动化测试之MonkeyRunner学习(二
  10. 我的Android进阶之旅------>Android通过