安卓 sharedpreferences可以被其它activity读取_安卓开发入门教程数据存储_SharedPreferences...

什么是SharedPreferences

SharedPreferences是一种以键值对形式保存数据的存储方式.每条数据都需要指定一个唯一键名来进行区分.可以存储布尔型、整型、字符串等基础数据类型.其特点为简单、轻量,适合保存少量简单类型的数据,不适合保存大批量或复杂类型的数据.SharedPreferences的实质是xml格式存储数据的文件.

基础样例

1. 写入和读取数据

  1. activity代码

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
writeDataBtn.setOnClickListener { writeSharedPreference() }
readDataBtn.setOnClickListener { readSharedPreference() }
}

/**
* 像SharedPreference中写入数据
*/
private fun writeSharedPreference() {
val spFileName = "test_sp_file"
val editor = getSharedPreferences(spFileName, Context.MODE_PRIVATE).edit()
editor.putString("userName", "萝莉")
editor.putInt("age", 16)
editor.putBoolean("isBeauty", true)
editor.apply()
}

/**
* 从SharedPreference中读取数据
*/
private fun readSharedPreference() {
val spFileName = "test_sp_file"
val sp = getSharedPreferences(spFileName, Context.MODE_PRIVATE)
val name = sp.getString("userName", "")
val age = sp.getInt("age", 0)
val isBeauty = sp.getBoolean("isBeauty", true)
Log.d("MainActivity", "姓名:$name")
Log.d("MainActivity", "年龄:$age")
Log.d("MainActivity", "是否漂亮:$isBeauty")
}
}

代码说明:

  • getSharedPreferences用于获取SharedPreferences对象,第一个参数用于指定存储的文件标识,一个应用中可以存在多个不同的这样的文件;第二个参数保持默认值Context.MODE_PRIVATE,表示私有,仅本应用内可以访问.

  1. 对应页面布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical">
<Buttonandroid:id="@+id/writeDataBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="写入数据" />
<Buttonandroid:id="@+id/readDataBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="读取数据" />
LinearLayout>

窥探内幕

SharedPreferences实质为xml文件,其存储路径在/data/data/应用包名/shared_prefs目录下.
本文对应工程生成的文件位于:/data/data/cn.cxy.demo/shared_prefs

0764405d86959118af74bddb298544ba.png

可以看到文件名test_sp_file.xml就来自于代码中指定的名称:val spFileName = "test_sp_file"文件内容:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="isBeauty" value="true" />
<string name="userName">萝莉string>
<int name="age" value="16" />
map>

备注:
刚安装app后,如果还没有往SharedPreferences写入过数据,那么shared_prefs目录就还不存在.

常用函数说明

函数名用途
putString存储字符串类型数据
putInt存储整型数据
putLong存储长整型数据
putFloat存储浮点型数据
putBoolean存储布尔值,true或false
putStringSet存储字符串集合
remove删除指定键名对应的数据记录
clear清空所有存储的数据
apply修改数据后,提交保存到文件中
getString以字符串类型读取出数据
getInt以整型读取出数据
getLong以长整型读取出数据
getFloat以浮点型读取出数据
getBoolean以布尔值读取出数据
contains判断是否包含某个键名的数据

完整源代码

https://gitee.com/cxyzy1/SharedPreferenceDemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值