实战第9篇:SharedPreferences持久化存储记事本
看完这1200字,你将获得如下技能:写一个带有存储功能的记事本。
一、理论
主要涉及的知识:SharedPreferences
存储,它的读取
和写入
方法。
1.1 共享首选项 SharedPreferences
Android中持久化存储有多种方式,最简单的一种就是SharedPreferences
。
SharedPreferences
不好翻译,都叫它SP,大家经常说把数据存到SP里。
如果要硬翻译的话,比较恰当的是:共享的首选项。
Shared就是共享的,可读可写,能存能取。Preferences在开发工具中比较常见,是首选项的意思,存储一些个人的偏好,比如快捷键,字体大小等。
从这里看出,其实,它就是存储一些简单且不重要的设置信息。比如是否记住密码、是否看过引导页啥的,这也是为啥软件卸载之后,引导页还会重新出现一遍的原因。
1.2 存储原理
SharedPreferences
其实最终存储到xml
文件中,这个文件位于你程序包名下的shared_prefs文件夹中。
如上图所示,完全是以键值对的形式存储,格式为:<[数据类型] name="[键]" value="[值]"/>
。
1.3 读取方式
如果要操作数据,首先需要通过getSharedPreferences
创建一个SharedPreferences
对象,后面的读取、写入都通过这个对象实现。
// 创建一个SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("book", MODE_PRIVATE);
// 【读】取出文本对象
String text = sharedPreferences.getString("text", "");
// 【写】实例化一个SharedPreferences.Editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("text", "hello");// 将值放入文件
editor.commit(); // 提交
读取的话,直接get对应的数据类型就可以了,例如getString("[键]", "[默认值-读不到显示它]")
。
写入的话,需要先获取一个编辑者editor
,然后,通过editor
来对某种类型的数据进行写入,例如:editor.putString("[键]", "[写入的内容]")
。
支持写入的类型:
支持读出的类型:
要注意,写入的类型和读出的类型要保持一致,否则会报错。
二、实战
有了相应的知识储备,我们就来开发下面的这个记事本App吧!
首先是布局,我决定还是放出来代码(因为里面有些美化的设置,比如输入框全屏、光标置顶):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:ems="10"
android:inputType="textPersonName"
android:hint="请输入内容"
android:gravity="top"
android:textSize="22sp"
/>
</LinearLayout>
接着,是我们的Activity,这里面要处理逻辑。
public class MainActivity extends Activity {
private EditText editText;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
// 创建一个SharedPreferences对象
sharedPreferences = getSharedPreferences("book", MODE_PRIVATE);
// 取出文本对象
String text = sharedPreferences.getString("text", "");
editText.setText(text);
}
@Override
protected void onStop() {
super.onStop();
//实例化SharedPreferences.Editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();
// 将获取过来的值放入文件
editor.putString("text", editText.getText().toString());
editor.commit(); // 提交
}
}
好了,最后点击运行,启动服务,去看看效果吧。
三、关于
现在,行业内多是Android转Java,很少有Java转Android的。
但是,这并不妨碍Java同学了解Android开发,从学习的角度去拓宽自己的知识面。
其实,不管是Java还是python,只要有编程基础的同学,一天看800字,30天可入门安卓。
转载自:https://juejin.cn/post/7129666495692406820