一、共享首选项-SharedPreferences
(一)概述
有些应用需要保存配置信息,如是否打开音效开关、登录时是否保存上次输入的用户名、密码等。Android 对这些类应用提供了 SharedPreferences(共享首选项),共享首选项适合数据量少,数据以键/值对的方式保存的应用。
(二)常用类/接口
1、SharedPreferences 接口
作用:该接口中定义了共享首选项操作的方法和一个重要的内部接口:Editor。
2、Editor 接口
作用:该接口定义了存储、删除数据的方法。
(三)常用方法
1、context.getSharedPreferences(String fileName,int mode);
作用:创建 SharedPreferences 接口的实现类的对象
第一个参数——fileName:指定共享首选项数据保存、读取的文件名。该文件存放在data/data/packageName/shared_prefs文件夹下。通过eclipse中的DDMS视图中的file-explorer视图可以找到当前项目中以上文件夹。默认文件名:类名.xml。
第二个参数——mode:共享首选项文件的存取权限,通过以下常量设置:
MODE_WORLD_PRIVATE:私有属性,只有本项目才能存取第一个参数指定的.xml文件。
MODE_WORLD_READABLE:允许其它项目读取本项目中的xml文件内容。
MODE_WORLD_WRITEABLE:允许其它项目向本项目中的.xml文件写数据。
——————————存数据————————————
2、共享首选项文件存储的相关方法:
1)Editor.putInt(String key,int value) 作用:存放键名为key的int类型的数据 2)Editor.putFloat(String key,float value) 作用:存放键名为key的float类型的数据 3)Editor.putString(String key,String value) 作用:存放键名为key的String类型的数据 4)Editor.putBoolean(String key,Boolean value) 作用:存放键名为key的Boolean类型的数据 5)Editor.putLong(String key,long value) 作用:存放键名为key的long类型的数据 6)Editor.remove(String key) 作用:移除键名为key的键/值对 7)Eidtor.commit() 作用:提交修改、保存结果 提示:只有执行了本方法,以上的put方法存储的数据才能真正有效。
——————————取数据————————————
3、共享首选等文件读取的相关方法(以下方法均从属于SharedPreferences接口的实现类)
1)int getInt(String key,int defValue) 作用:获取键名是key的int类型的数据,若没有key,则可以设置一个默认值:defValue 2)boolean getBoolean(String key,Boolean defValue) 作用:获取键名是key的boolean类型的数据,若没有key,则可以设置一个默认值:defValue 3)float getFloat(String key,float defValue) 作用:获取键名是key的float类型的数据,若没有key,则可以设置一个默认值:defValue 4)long getLong(String key,long defValue) 作用:获取键名是key的long类型的数据,若没有key,则可以设置一个默认值:defValue 5)String getString(String key,String defValue) 作用:获取键名是key的String类型的数据,若没有key,则可以设置一个默认值:defValue
案例:
package com.jxust.day06_05_sharedpreferencesdemo; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { EditText metId, metPwd; SharedPreferences mSp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); setListener(); readData(); } private void readData() { mSp = getSharedPreferences("login", MODE_PRIVATE); String id = mSp.getString("id", ""); String password = mSp.getString("password", ""); metId.setText(id); metPwd.setText(password); } private void setListener() { findViewById(R.id.btnLogin).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String id = metId.getText().toString(); if(TextUtils.isEmpty(id)){ metId.setError("编号不能为空!"); return; } String password = metPwd.getText().toString(); if(TextUtils.isEmpty(password)){ metPwd.setError("密码不能为空!"); return; } mSp = getSharedPreferences("login", MODE_PRIVATE); Editor editor = mSp.edit(); //会生成一个Editor类型的引用变量 editor.putString("id", id); editor.putString("password", password); editor.commit(); Toast.makeText(MainActivity.this, "登陆完成!", 3000).show(); } }); findViewById(R.id.btnExit).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); } private void initView() { metId = (EditText) findViewById(R.id.etId); metPwd = (EditText) findViewById(R.id.etPwd); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登陆编号" /> <EditText android:id="@+id/etId" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="2-10个字符" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登陆密码" /> <EditText android:id="@+id/etPwd" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="2-10个字符" android:password="true" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:orientation="horizontal" > <Button android:id="@+id/btnLogin" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_weight="1" android:text="登陆" /> <Button android:id="@+id/btnExit" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_weight="1" android:text="退出" /> </LinearLayout> </LinearLayout>
相关推荐
Android-SharedPreferences-Helper 简化默认Android SharedPreferences类的用法。 库大小=〜15kb。 开发人员可以执行几行代码,否则将需要几行代码。 与默认类相比,它易于理解,并且易于使用。突出特点资料库大小:...
在Android开发领域,"共享首选项"(SharedPreferences)是一个至关重要的知识点,它是应用程序用来存储轻量级数据的理想选择。在本视频教程“060集-共享首选项”中,很可能会深入讲解如何使用SharedPreferences来...
PreferencesEditor是一个开源项目,其主要功能是简化开发者对共享首选项文件的管理。它允许开发者轻松地添加、编辑和删除共享偏好设置中的键值,极大地提高了工作效率。对于那些频繁需要调整用户偏好设置的开发者来...
标题中的“rxkprefs”是一个基于Kotlin的开源库,专为Android开发设计,用于处理应用程序的共享首选项(SharedPreferences)操作。这个库引入了Reactive Extensions (RX)的概念,使得对SharedPreferences的读写变得...
首选项通常使用SharedPreferences类来实现,它提供了键值对的形式来存储和读取数据。在本讲解中,我们将深入探讨SharedPreferences的工作原理、使用方法以及相关API,同时结合实际案例进行分析。 **...
- 编辑共享首选项:使用`SharedPreferences.Editor`接口进行数据的写入,调用`putXXX()`方法(根据数据类型选择`putBoolean()`, `putInt()`, `putFloat()`, `putLong()`, `putString()`等),然后调用`commit()`或`...
在Android应用开发中,调试是不可或缺的一环,尤其是在处理数据库和共享首选项(SharedPreferences)时。Java中的Android Debug Database库正是为了解决这个问题而诞生的,它极大地简化了开发者对这两种存储方式的...
在Android开发中,`...总结,`SharedPreferences`是Android开发中处理轻量级数据的首选工具,尤其适用于存储用户偏好和简单状态信息。通过熟练掌握其API和使用技巧,可以有效提高应用的用户体验和稳定性。
TinyDB-Android共享首选项-Turbo 此类简化了一行代码中对SharedPreferences的调用。 它还可以做更多类似的事情:保存字符串,整数列表和保存图像。 全部在1行代码中! 用法示例: TinyDB tinydb = new TinyDB...
在许多情况下,我们需要保存用户的一些偏好设置或应用状态,这时共享首选项(SharedPreferences)就派上用场了。SharedPreferences提供了一种轻量级的键值对存储方式,适合存储非敏感的小量数据,如用户设置、应用...
传统的共享首选项(SharedPreferences)虽然简单易用,但在处理复杂数据结构时显得力不从心。EasyDataStorage库则通过提供更高层次的抽象,让开发者能够以更直观、更高效的方式进行数据存储操作,比如直接存储和读取...
它允许开发者保存和读取用户的一些简单配置数据,例如开关状态、首选项选项等。SharedPreferences存储的数据是以键值对的形式存在,支持的基本数据类型包括字符串(String)、整型(int)、浮点型(float)、布尔型...
- 可以通过`registerOnSharedPreferenceChangeListener()`注册一个监听器,当首选项发生变化时,会触发回调。 `1.2SharePreference`项目中,主要涉及以下知识点: 1. **跨应用读取SharedPreferences**: - 要在...
它们通常存储在共享首选项(SharedPreferences)中,这是一种轻量级的持久性数据存储方式,适合保存用户配置。 1. **SharedPreferences**: - SharedPreferences是Android提供的一种用于存储简单键值对的数据结构...
清除共享首选项Eclipse 中的 JUnit 4 测试运行程序不提供 Android 库。 这个库的存在是为了恢复SharedPreferences的存根版本。 请原谅我。GitHub 托管的 Maven 存储库命令mvn deploy将构建的 jars 上传到github....
它提供了一种键值对的形式来保存数据,并且可以跨活动(Activity)共享。本篇文章将深入探讨SharedPreferences的使用方法、特点以及在实际应用中的精彩实践。 首先,我们来了解SharedPreferences的基本操作。...
Android 的统一SharedPreferences 。 除了 XML 之外,还允许使用 DB、JSON 作为 SharedPreferences 的低级存储。 在低端设备上大大提高了性能。 修复了几个已知的性能和操作系统资源泄漏问题(Android 5.1.x 仍然...
- 用户的设置通常保存在共享首选项(SharedPreferences)中。`Preference`会自动处理与SharedPreferences的交互。 - `Preference`的`android:defaultValue`属性用于设定默认值,当没有已保存的偏好时,将使用这个...
这是Android共享首选项包装程序,它使用AES 128 , CBC和PKCS5填充对共享首选项的值进行加密,并以SHA 256哈希的形式进行完整性检查。 每个密钥存储为一种单向SHA 256哈希。 键和值在存储到prefs xml文件之前均经过...