• Android攻城狮数据存储之SharedPreferences


    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 }
  • 相关阅读:
    自定义TabBarController
    UITabBarController剖析
    IOS中UIScrollView的contentSize、contentOffset和contentInset属性
    iOS开发 剖析网易新闻标签栏视图切换
    transitionFromViewController方法的使用
    ViewController生命周期
    1816. Truncate Sentence
    1290. 二进制链表转整数
    1302. 层数最深叶子节点的和
    102.二叉树的层次遍历
  • 原文地址:https://www.cnblogs.com/my334420/p/6729088.html
Copyright © 2020-2023  润新知