Android攻城狮数据存储之SharedPreferences

本文详细介绍了Android中SharedPreferences的使用方法,包括其基本概念、数据存储流程及示例代码。通过一个登录场景的应用实例,展示了如何利用SharedPreferences来存储和读取简单的配置信息。

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

Android的四种数据存储方式:
1. SharedPreferences
2. SQLite
3. Content Provider
4. File
---------------------
SharedPreferences:
1. 是一种轻型的数据存储方法;
2. 本质是基于 XML 文件存储 key-value 键值对数据;
3. 通常用来存储一些简单的配置信息。一般是放置当前应用的属性值,信息量不多,所以用数据库的话不划算,还可能造成时间上的浪费。
只能实现非常简单的存放数据和读取数据。SharedPreferences只能识别简单的数据类型,比如String、int,对于复杂的类型,比如自定义的类型,可能就无法存储了(或者通过转码操作转变为字符串也倒是可以存储)。
SharedPreferences属于Android自带的轻量级的存储类,效率并不是很高。
----------------------
要点:
1. SharedPreferences对象本身只能获取数据而不支持存储和修改,存储和修改是通过 Editor 对象实现的;
2. 实现 SharedPreferences 存储的步骤:
(1)获得 SharedPreferences 对象;
(2)获得 SharedPreferences.Editor 对象;
(3)通过 Editor 接口的 putXxx 方法保存 key-value对,其中的Xxx表示不同的数据类型;
(4)通过 Editor 接口的 commit 方法保存 key-value对。
 1 public class MainActivity extends ActionBarActivity {
 2     EditText username, password;
 3     SharedPreferences pre;
 4     CheckBox checkBox;
 5     Editor editor;
 6 
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.fragment_main);
11         // SharedPreferences pref =
12         // PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
13 
14         /*--------------------------
15         SharedPreferences pref = getSharedPreferences("myPref", MODE_PRIVATE);
16         Editor editor = pref.edit();
17         editor.putString("name", "zy");
18         editor.putInt("age", 22);
19         editor.putLong("time", System.currentTimeMillis());
20         editor.putBoolean("default", true);
21 
22         editor.commit();
23         editor.remove("default");
24         editor.commit();
25         System.out.println(pref.getString("name", "xx"));
26         System.out.println(pref.getInt("age", 0));
27          */
28 
29         // ----------------实例-------------
30         username = (EditText) findViewById(R.id.username);
31         password = (EditText) findViewById(R.id.password);
32         checkBox = (CheckBox) findViewById(R.id.savename);
33         pre = getSharedPreferences("userinfo", MODE_PRIVATE);
34         editor = pre.edit();
35         String name = pre.getString("username", "");
36         if (name == null || name.equals("")) {
37             checkBox.setChecked(false);
38         } else {
39             checkBox.setChecked(true);
40             username.setText(name);
41         }
42 
43     }
44 
45     public void doClick(View view) {
46         switch (view.getId()) {
47         case R.id.login:
48             String name = username.getText().toString().trim();
49             String pass = password.getText().toString().trim();
50             if ("zy".equals(name) && "123456".equals(pass)) {
51                 if (checkBox.isChecked()) {
52                     editor.putString("username", name);
53                     editor.commit();
54 
55                 } else {
56                     editor.remove("username");
57                     editor.commit();
58                 }
59                 Toast.makeText(MainActivity.this, "成功了", 0).show();
60             } else {
61                 Toast.makeText(MainActivity.this, "失败咯", 0).show();
62             }
63 
64             break;
65 
66         case R.id.cancel:
67             break;
68         }
69     }
70 }

 

转载于:https://www.cnblogs.com/my334420/p/6729088.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值