Android数据常用的储存方案,分别如下
文件储存数据
将文件储存到文件中
Context
类提供了一个openFileOutput()
方法,可以用于将数据文件储存到指定的文件中。这个方法接收两个参数,第一个参数文件名,可以不包含路径,默认储存位置/data/data/<package-name>/files/
目录下,第二个参数是文件的操作模式,MODE_PRIVATE
和MODE_APPEND
,其中MODE_PRIVATE
是默认的操作模式,表示同名文件时覆盖原文件,后者则表示追加OpenFileOuput()
方法返回的是一个FileOutputStream
对象,得到这个对象就可以使用Java
流的方式将文件写入到文件中了
示例
1 | private void save(String inputText) { |
修改MainActivity
中的代码,布局加入EditText
,代码如下
1 | public class MainActivity extends AppCompatActivity { |
从文件中读取数据
类似的,Context
类提供一个openFileInput()
方法,用于从文件中读取数据。它只接收一个参数,即要读取的文件文件名,然后系统会自动到/data/data/<package-name>/files/
中去加载这个文件,并返回一个FileInputStream
对象,得到这个对象再通过Java流的方式就可以将数据读取出来了。
示例
1 | private String load() { |
修改MainActivity
实现EditText
能够保存上次输入的内容1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public class MainActivity extends AppCompatActivity {
private EditText edit;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String inputText = load();
edit = findViewById(R.id.edit);
if (!TextUtils.isEmpty(inputText)) {
edit.setText(inputText);
edit.setSelection(inputText.length());
Toast.makeText(this, "Restoring successed", Toast.LENGTH_SHORT).show();
}
}
//...
//...save()
//...load()
}
使用SharePreferences储存数据
将数据储存到SharedPreferences中
SharePreferences
是用键值对的方式来储存数据的。每当保存一条数据,需要给这条数据提供相应的键,这样在读取文件的时候就可以通过这个键把相应的值取出来。而且SharePreferences
还支持多种不同的数据类型的储存
Android提供了三种得到SharePreferences
的方法
Context
类中的getSharePreferences()
方法
此方法接收两个参数,第一个用于指定SharePreferences
文件的名称,如果指定的文件不存在则会创建一个,SharePreferences
文件都是放在/data/data/<package-name>/shared_prefs/
目录下的。第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE
和MODE_MULTI_PROCESS
,MODE_PRIVATE
仍然是默认的操作模式,表示当前的应用程序才会对SharePreferences
文件进行读写。MODE_MULTI_PROCESS
则一般用于会有多个进程中对同一个文件进行读写的情况Activity
类中的getPreferences()
方法
这个方法和Context
中的getSharePreferences()
方法类似,不过它只接收一个操作模式的参数,因为使用这个方法时会自动将当前活动的类名作为SharePreferences
的文件名PreferenceManeger
类中的getDefaultSharePreferences
方法
这是一个静态方法,它接收一个Context
参数,并自动使用当前应用程序的包名作为前缀来命名SharePreferences
文件,操作可分为三步- 调用
SharePreferences
对象的edit()
方法来获取一个SharePreferences.Edit
对象。 - 向
SharePreferences.Edit
对象中添加数据,比如添加一个布尔型数据就使用putBoolean
方法,以此类推 - 调用
apply()
方法将添加的数据提交,从而完成数据储存的操作
- 调用
示例
1 | public class MainActivity extends AppCompatActivity { |
从SharedPreferences中读取数据
//TODO 未完待续