SharedPreferences是Android中一种轻量级的存储机制,可以轻松存储和读取应用程序的简单数据和设置。它的应用场景包括储存应用程序的配置信息、用户喜好设置、应用程序的状态信息、需要缓存的数据等等。SharedPreferences能够持久化保存数据并且在下次应用程序启动时重新加载这些数据。
一、使用SharedPreferences储存和访问数据
可以通过以下代码段加载、存储和操作SharedPreferences:
//获取SharedPreferences实例 SharedPreferences sharedPreferences = getSharedPreferences("myPref", Context.MODE_PRIVATE); //存储数据 SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("name", "Tom"); editor.putInt("age", 25); editor.apply(); //读取数据 String name = sharedPreferences.getString("name", ""); int age = sharedPreferences.getInt("age", -1); //删除单个数据 editor.remove("name"); editor.apply(); //删除全部数据 editor.clear(); editor.apply();
通过参数"myPref"和Context.MODE_PRIVATE创建一个SharedPreferences实例。使用SharedPreferences.Editor的put方法存储数据,apply方法则将对SharedPreferences的修改提交。
使用get方法从SharedPreferences读取数据,如果指定的键不存在则其次参数返回默认值。使用remove方法可以删除单个元素,使用clear方法可以删除所有元素。
二、在Fragment或者Activity中使用SharedPreferences
Fragment或者Activity中使用SharedPreferences存储和访问数据与在上下文中使用相同的方法。可以通过以下方式加载并使用SharedPreferences:
//获取SharedPreferences实例 SharedPreferences sharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE); //存储数据 SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean("enabled", true); editor.apply(); //读取数据 boolean enabled = sharedPreferences.getBoolean("enabled", false);
使用getActivity().getPreferences(Context.MODE_PRIVATE)方法获取SharedPreferences实例,这种方式的文件名是这个Activity的类名。
三、使用SharedPreferences实现应用程序设置
SharedPreferences也可以用来存储应用程序的设置。通过这种方式存储的数据会在应用程序的生命周期中一直保持。以下是如何在Activity中实现应用程序设置的一个简单实例:
public class SettingsActivity extends AppCompatActivity { private Switch mSwitch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); mSwitch = (Switch) findViewById(R.id.switch_notifications); mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(SettingsActivity.this).edit(); editor.putBoolean(getString(R.string.notification_pref_key), isChecked); editor.apply(); } }); boolean notificationsEnabled = PreferenceManager.getDefaultSharedPreferences(this) .getBoolean(getString(R.string.notification_pref_key), false); mSwitch.setChecked(notificationsEnabled); } }
上述代码展示了如何在应用程序中添加开关按钮以控制设置信息。在这个Activity中,我们使用SharedPreferences存储和读取一个布尔值,并根据所存储的值来更新这个开关。
使用getDefaultSharedPreferences方法来获得一个SharedPreferences实例,这个方法使用默认的SharedPreferences文件名
.四、总结
SharedPreferences是一种非常简单易用的机制,可以用来存储和读取程序的简单数据和设置。与其他的数据存储机制(如SQLite)比较,SharedPreferences 的代码实现和处理也很简单。
建议尽可能使用SharedPreferences来确定应用程序的配置选项,但在面对更复杂的数据和结构时,可能需要使用其他的储存机制。