Android存储-SharedPreferences

本文介绍了Android系统中SharedPreferences的存储机制,适用于保存简单的键值对数据,如登录信息和个人基本信息。通过示例代码展示了如何读取和写入数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android的数据存储

Android系统中,每个应用软件数据(包括文件)为该应用软件所私有。但是,Android同样也提供了一种标准方式或接口,让应用软件将私有数据开放,供其他应用软件使用。

Android中,存储方式有:SharedPreferences、文件存储、SQLite数据库、Content provider(内容提供器)和网络。

1. SharedPreferences方式

SharedPreferences是一种轻量级存储方式,适合存储登陆信息、个人基本信息等简单的key-value形式的值,它可以保存一些基本的数据类型,如String,int,Boolean等。下面通过简单实例来讲解,功能是存储个人基本信息。代码如下:

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.sharedpreferences);

nameET = (EditText)findViewById(R.id.name);

sexET = (EditText)findViewById(R.id.sex);

habitET = (EditText)findViewById(R.id.habit);

employeeCB = (CheckBox)findViewById(R.id.isEmployee);

companySize = (RadioGroup)findViewById(R.id.companySize);

bigCompany = (RadioButton) findViewById(R.id.bigCompany);

mediumCompany = (RadioButton) findViewById(R.id.mediumCompany);

smallCompany = (RadioButton) findViewById(R.id.smallCompany);

//注册CheckBox对象状态变化的监听端口

employeeCB.setOnCheckedChangeListener(this);

SharedPreferences sharedPreferences = getSharedPreferences(NAME_SHARED, Activity.MODE_PRIVATE);

//如果name不存在,以""代替

nameET.setText(sharedPreferences.getString("name", ""));

sexET.setText(sharedPreferences.getString("sex",""));

habitET.setText(sharedPreferences.getString("habit", ""));

employeeCB.setChecked(sharedPreferences.getBoolean("isEmployee", false));

companySize.check(sharedPreferences.getInt("companySize", -1));

onCheckedChanged(employeeCB, employeeCB.isChecked());

}

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)

{

System.out.println("---onCheckedChanged");

bigCompany.setEnabled(isChecked);

mediumCompany.setEnabled(isChecked);

smallCompany.setEnabled(isChecked);

}

@Override

protected void onStop()

{

//退出时保存数据,首先获取SharedPreferences对象,

SharedPreferences mySharedPreferences = getSharedPreferences(NAME_SHARED, Activity.MODE_PRIVATE);

SharedPreferences.Editor myEditor = mySharedPreferences.edit();

myEditor.putString("name", nameET.getText().toString());

myEditor.putString("sex",sexET.getText().toString());

myEditor.putString("habit", habitET.getText().toString());

myEditor.putBoolean("isEmployee", employeeCB.isChecked());

myEditor.putInt("companySize", companySize.getCheckedRadioButtonId());

//提交数据,保存

myEditor.commit();

super.onStop();

}

用户点击“是否工作”,程序会根据其状态来确定是否会显示公司规模,当所有都选择完成后,用户退出程序,程序会调用onStop(),自动保存当前所有的数据,首先,获取通过getSharedPreferences()获取SharedPreferences对象,在通过SharedPreferences对象获取SharedPreferences.Editor对象,利用SharedPreferences.Editor对象完成数据的存储与获取。

保存的数据会以XML形式保存,保存位置为:/data/data/<package name>/shared_prefs/xxx.xml DDMS中的File Explorer中可以看到。这个文件可以导出来查看,如下:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

- <map>

<int name="companySize" value="2131034129" />

<string name="sex">man</string>

<string name="habit">music</string>

<boolean name="isEmployee" value="true" />

<string name="name">wanglejun</string>

</map>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值