初学Android,数据存储之SharedPreferences(四十一)
16lz
2021-01-24
有时候,应用程序有少量数据需要保存,比如说是否使用振动,是否打开GPS等设置,对于这些小数据量的需求,没有必要使用数据库
Android提供了SharedPreferences接口,它用来读取程序的Preferences数据,它保存的数据主要是简单的key-vaule对
有如下方法来访问key-value对
boolean contains(String key) 判断是否包含特定key的数据
abstract Map<String,?> getAll() 获取SharedPreferences数据里面全部的key-value对
getXxx(String Key,xxx defValue) 判断是否包含特定key的数据,如果不包含,返回默认值得defValue,Xxx为数据类型
SharedPreferences本身没有提供写入数据的能力,而是通过内部接口调用edit()方法即可获取它所对应的Editor对象
Editor提供如下方法来向SharedPreferences写入数据
clear() 清空SharedPreferences所有数据
putXxx(String key,xxx value) 向SharedPreferences存入指定key对应的数据
remove(String key) 向SharedPreferences删除指定key对应的数据
boolean commit() 当Editor编辑完成后,调用该方法提交修改
通过Context提供的getSharedPreferences(String name,int mode) 来获取SharedPreferences
第二个参数有如下几个值:
Context.MODE_PRIVATE: 指定数据只能被本应用程序读写
Context.MODE_WORLD_READABLE: 指定数据能被其它应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE: 指定数据能被其它应用程序读和写
下面程序向Preferences写入当前时间和一个随机数
Android提供了SharedPreferences接口,它用来读取程序的Preferences数据,它保存的数据主要是简单的key-vaule对
有如下方法来访问key-value对
boolean contains(String key) 判断是否包含特定key的数据
abstract Map<String,?> getAll() 获取SharedPreferences数据里面全部的key-value对
getXxx(String Key,xxx defValue) 判断是否包含特定key的数据,如果不包含,返回默认值得defValue,Xxx为数据类型
SharedPreferences本身没有提供写入数据的能力,而是通过内部接口调用edit()方法即可获取它所对应的Editor对象
Editor提供如下方法来向SharedPreferences写入数据
clear() 清空SharedPreferences所有数据
putXxx(String key,xxx value) 向SharedPreferences存入指定key对应的数据
remove(String key) 向SharedPreferences删除指定key对应的数据
boolean commit() 当Editor编辑完成后,调用该方法提交修改
通过Context提供的getSharedPreferences(String name,int mode) 来获取SharedPreferences
第二个参数有如下几个值:
Context.MODE_PRIVATE: 指定数据只能被本应用程序读写
Context.MODE_WORLD_READABLE: 指定数据能被其它应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE: 指定数据能被其它应用程序读和写
下面程序向Preferences写入当前时间和一个随机数
package WangLi.IO.SharedPreferencesTest;import java.util.Date;import java.text.SimpleDateFormat;import android.app.Activity;import android.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class SharedPreferencesTest extends Activity {SharedPreferences preferences;SharedPreferences.Editor editor; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取只能被本应用程序读,写的SharedPreferences对象 preferences = getSharedPreferences("IO",MODE_PRIVATE); editor = preferences.edit(); Button read = (Button)findViewById(R.id.read); Button write = (Button)findViewById(R.id.write); read.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { //读取字符串数据 String time = preferences.getString("time", null); //读取int类型的数据 int randNum = preferences.getInt("random", 0); String result = time == null ? "您暂时还未写入数据" : "写入时间为:" + time + "\n 上次生成的随机数为:" + randNum; //使用Toast提示信息 Toast.makeText(SharedPreferencesTest.this, result, 5000).show(); } }); write.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日" + "hh:mm:ss"); //存入当前时间 editor.putString("time", sdf.format(new Date())); //存入一个随机数 editor.putInt("random", (int)(Math.random() * 100)); //提交所有存入的数据 editor.commit(); } }); }}
存储好的Preferences可以在DDMS的File Explorer 中找到
导出文件打开,里面就是刚刚写入的Key-Value
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <map> <int name="random" value="73" /> <string name="time">2012年09月06日03:08:07</string> </map>
更多相关文章
- android 预装第三方apk的方法(非system priv-app)
- adroid之Sqlite篇
- Android应用程序反编译
- Android(安卓)TextView使用HTML处理字体样式、显示图片等
- 个推-Android集成
- [置顶] Android(安卓)屏幕旋转相关解析
- Android(安卓)开源库StickyListHeadersListView来实现ListView列
- android 自学日记(五) ——ListView
- Android中Okhttp,Volley,Retrofit网络框架优缺点及对比