Android下的数据储存方式

时间:2021-12-09 22:20:32

 

安卓系统默认提供了一下几种数据储存的方式:

  1. Shared Preferences
  2. 内部储存
  3. 外部储存
  4. SQLite数据库
  5. 保存到网络服务器

 

使用Shared Preferences

      Shared Preferences类主要用于保存键值对的数据类型。我们可以使用它保存一些简单的数据类型。

      

获得SharedPreferences对象有两种方法:

  1. 通过getSharedPreferences()方法
  2. 通过getPreferences()方法

 

上面两种方法的分别主要是:

       第一种方法可以创建多个文件来保存数据

       第二种方法只能创建一个文件保存数据

 

我们先来创建一个这样的布局:

Android下的数据储存方式

布局代码:

<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" > <EditText
android:id="@+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/> <EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/> <Button
android:id="@+id/write"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="write to file"/> </LinearLayout>

 

布局准备好后就可以获取SharedPreferences对象写入数据:

package com.whathecode.storageoptinos;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends Activity
{ @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); final EditText namefield = (EditText) findViewById(R.id.username);
final EditText agefield = (EditText) findViewById(R.id.age); Button btnWrite = (Button) findViewById(R.id.write); // 获取SharedPreferences对象,文件权限为私有
SharedPreferences spf = getSharedPreferences("record", MODE_PRIVATE);
// 获取编辑器
final SharedPreferences.Editor editor = spf.edit(); btnWrite.setOnClickListener(new View.OnClickListener()
{ @Override
public void onClick(View v)
{
String username = namefield.getText().toString();
String age = agefield.getText().toString(); editor.putString("username", username);
editor.putString("age", age);
if (editor.commit()) // 当成功写入数据返回true
{
Toast.makeText(getBaseContext(), "文件已写入",
Toast.LENGTH_SHORT).show();
}
}
}); }
}

上面的代码中,我们主要使用SharedPreferences的内部类Editor类

我们主要使用这个类的几个Put*方法

Android下的数据储存方式

 

当调用完这些方法后我们就可以使用commit()或者apply()方法开始写数据

需要注意的是,当多个Editor对同一个文件进行写数据的时候,后完成的一个Editor的结果将覆盖前一个的结果

commit和apply方法的区别是:commit写入成功返回true,而apply没有返回值。

当我们不在乎返回值的时候可以调用apply()方法写数据。

 

运行结果:

Android下的数据储存方式

 

数据写入后我们就可以在Eclipse的ddms试图中查看是否有写入成功

数据保存在 /data/data/包名/shared_prefs目录下

Android下的数据储存方式