当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢?

数据存储方式

Android 的数据存储有5种方式:

1. SharedPreferences存储数据
   SharedPreferences数据存储,也叫作xml存储。这是将数据存储“data/data/程序包名/share_prefs”路径下的到xml文件中。 
相关连接:《Android中数据存储——SharedPreferences存储数据》
2. 文件存储数据
   分为内部储存和外部存储。内部存储是应用程序使用Android为自己分配的内存空间,数据存储到“/data/data/程序包名/files”路径下的相应文件中。外部存储是使用手机sdcard的内存(这个sdcard并不是我们经常说的那个可以拆卸替换的SD卡,那个SD卡我们称之为扩展卡),使用这部分内存要声明相应的权限。
相关连接: 《Android中数据存储——文件存储数据 》
3. SQLite数据库存储数据
  使用数据库进行存储,这个一般数据量比较大的时候。 
相关连接:《Android中数据存储——SQLite数据库存储数据 》 
4. 使用ContentProvider存储数据
  这个比较眼熟,ContentProvider也是Android的四大组件之一。ContentProvider一般是第三方提供的数据存储方式,向我们手机中的通讯录联系人,照片,音乐等……
相关连接:《Android中数据存储——ContentProvider存储数据 》  
5. 网络存储数据
   这个是将数据上传到网络上进行存储。
   
  下面进入我们今天的主要内容,使用SharedPreferences存储数据。

SharedPreferences存储数据

  SharedPreferences是一种轻型的数据存储方式,实际上是基于XML文件存储的“key-value”键值对数据。通常用来存储程序的一些配置信息。其存储在“data/data/程序包名/shared_prefs“目录下。
  
使用SharedPreferences来存储数据首相我们要获得SharedPreferences的对象。

获得SharedPreferences的对象

  获得SharedPreferences对象的方法有三种:
(1)通过Context的getSharedPrerences(key, [模式])方法获取SharedPreferences对象;方法的第一个参数是用于指定SharedPreferences文件的名称,第二个参数是指定操作模式,主要有两种模式进行选择:MODE_PRIVATEMODE_MULTI_PROCESS。默认操作是MODE_PRIVATE。除此之外还有MODE_EORLD_READEABLE,MODE_WORLD_WRITEABLE两种。
(2)通过Activity类提供的getPrerences(key)方法获取到SharedPreferences对象;该方法会创建一个以当前活动类名作为SharedPreferences文件名的文件。
(3)通过PreferencesManager类中的getDefaultPreferernces()方法获得;这是一个静态的方法,他接受一个Context参数,并将当前应用程序的包名作为SharedPreferences文件名。

下面我们来看一下如何使用SharedPreferences读写数据……

写数据

步骤:

(1)根据Context的getSharedPrerences(key, [模式])方法获取SharedPreferences对象;
(2)利用SharedPreferences的editor()方法获取Editor对象;
(3)通过Editor的putXXX()方法,将键值对存储数据;
(4)通过Editor的commit()方法将数据提交到SharedPreferences内。

我们来看代码:

    //key = "sharedpreferences_test",也就是数据存储在data/data/程序包名/shared_prefs目录下的sharedpreferences_test.xml文件下。        SharedPreferences preferences = getSharedPreferences("sharedpreferences_test", MODE_PRIVATE);        SharedPreferences.Editor editor = preferences .edit();        editor.putString("data", "我是存储的数据!");        editor.commit();

读数据

步骤:

(1)根据Context的getSharedPrerences(key, [模式])方法获取SharedPreference对象;
(2)通过SharedPreference对象的getXXX方法获得数据。例如:getString(String s, String s1)方法有两个位参数,第一个s为要获得的值的键,第二个s1为如果键值不存在返回的默认的String类型的值。

我们来看代码:

        SharedPreferences preferencesOutput = getSharedPreferences("sharedpreferences_text", MODE_PRIVATE);        String content = preferencesOutput.getString("data", "我是默认数据值");

SharedPreferences存储数据学习巩固

  下面我们举一个例子来练习使用一下SharedPreferences存储,功能描述:我们定义一个TextView用于显示从SharedPreferences中读取到的数据,用一个EditText来输入要存储到SharedPreferences中的数据。通过两个Button来控制读和写两个操作。
  
1. 首先定义界面布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity">    <TextView  android:id="@+id/textview_output" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="读出内容写在次数" android:textSize="20sp" />    <EditText  android:id="@+id/edittext_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入要写入的内容" />    <LinearLayout  android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">        <Button  android:id="@+id/button_read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ButtonRead" />        <Button  android:id="@+id/button_write" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ButtonWrite" />    </LinearLayout></LinearLayout>

2. 在Activity中声明各个控件,并创建对象。添加两个Button的点击事件。
Activity中的代码:

public class MainActivity extends Activity implements View.OnClickListener {    private Button mButtonRead;    private Button mButtonWrite;    private EditText mEditTextInput;    private TextView mTextViewOutput;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mButtonRead = (Button) findViewById(R.id.button_read);        mButtonWrite = (Button) findViewById(R.id.button_write);        mEditTextInput = (EditText) findViewById(R.id.edittext_input);        mTextViewOutput = (TextView) findViewById(R.id.textview_output);        mButtonRead.setOnClickListener(this);        mButtonWrite.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button_write:                writeSharePreference();                break;            case R.id.button_read:                readSharePreference();                break;            default:                break;        }    }    /* 从data/data/应用名/shared_prefs目录下文件读取相关数据 */    private void readSharePreference() {        SharedPreferences preferencesOutput = getSharedPreferences("sharedpreferences_text", MODE_PRIVATE);        String content = preferencesOutput.getString("input", "我是默认值");        mTextViewOutput.setText(content);    }    /* 向data/data/应用名/shared_prefs目录下文件写相关数据 */    private void writeSharePreference() {        SharedPreferences preferencesInput = getSharedPreferences("sharedpreferences_text", MODE_PRIVATE);        SharedPreferences.Editor editor = preferencesInput.edit();        editor.putString("input", mEditTextInput.getText().toString());        editor.commit();    }}

点击写数据按钮,将数据写入:

查看data/data/应用名/shared_prefs目录:

打开sharedpreferences_text.xml文件查看内容:

点击读数据按钮:

更多相关文章

  1. Android高手进阶教程(十一)之----Android(安卓)通用获取Ip的方法
  2. Android开机启动Activity或者Service方法
  3. 关于Android短信管理
  4. Android中对媒体的使用
  5. 浅谈Java中Collections.sort对List排序的两种方法
  6. mybatisplus的坑 insert标签insert into select无参数问题的解决
  7. python起点网月票榜字体反爬案例
  8. 类和 Json对象
  9. Python list sort方法的具体使用

随机推荐

  1. Android/iOS内嵌Unity开发示例
  2. Kotlin在AndroidStudio中的环境搭建以及
  3. 【Android自助餐】Handler消息机制完全解
  4. Android数据库高手秘籍(零)——前言[转载
  5. android 系统服务
  6. adb设备连接以及文件拷贝
  7. Android与HTML JavaScript交互
  8. Android 游戏开发的一些基础和经验
  9. android sqlite 介绍
  10. Android模拟器