Android开发手记(16) 数据存储一 SharedPreferences

  SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据。这类似于C++中Map的数据存储方式(实际上在最后生成的.xml文件内,就是以Map格式存储的)。

  获取SharedPreferences的两种方式:

    1、调用Context对象的getSharedPreferences()方法

    2、调用Activity对象的getPreferences()方法

  两种方式的区别:

    调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享。

    调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用。

  其中,getSharedPreferences()的方法原型为:

getSharedPreferences(String name, int mode);
// name: 生成xml文件的名称// MODE_PRIVATE: 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
// MODE_APPEND: 模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
// MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取,不推荐使用
// MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入,不推荐使用

  使用SharedPreferences存储数据的方法如下:

//实例化SharedPreferences对象(第一步)
SharedPreferences sp = getSharedPreferences("test", MODE_PRIVATE);
//实例化SharedPreferences.Editor对象(第二步)
SharedPreferences.Editor editor = mySharedPreferences.edit();
//用putString的方法保存数据
editor.putString("UserName", etName.getText().toString());
editor.putString("Password", etPassword.getText().toString());
//提交当前数据
//editor.apply();
editor.commit();
//使用toast信息提示框提示成功写入数据
Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_LONG).show();

  使用SharedPreferences读取数据的方法如下:

SharedPreferences sp = getSharedPreferences(strLogInfo, MODE_APPEND);
String name = sp.getString("UserName", "");
String passwd = sp.getString("Password","");
if(etName.getText().toString().equals(name) && etPassword.getText().toString().equals(passwd)){
        Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_LONG).show();
} else{
        Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_LONG).show();
}

  在使用SharedPreferences之后,程序会在“/data/data/包名/shared_prefs/xxx.xml”生成的一个XML文件。文件名取决于getSharedPreferences的第一个参数名。

1 <?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>
2 <map>
3     <string name="UserName">Name</string>
4     <string name="Password">Password</string>
5 </map>

  完整代码如下:

 1 import android.content.SharedPreferences;
 2 import android.support.v7.app.AppCompatActivity;
 3 import android.os.Bundle;
 4 import android.view.View;
 5 import android.widget.Button;
 6 import android.widget.EditText;
 7 import android.widget.Toast;
 8
 9 public class MainActivity extends AppCompatActivity {
10
11     private EditText etName;
12     private EditText etPassword;
13     private Button btnLogin;
14     private Button btnLogup;
15     private String strLogInfo = "test";
16
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity_main);
21
22         etName = (EditText)findViewById(R.id.etName);
23         etPassword = (EditText)findViewById(R.id.etPassword);
24         btnLogin = (Button)findViewById(R.id.btnLogin);
25         btnLogup = (Button)findViewById(R.id.btnLogup);
26
27         btnLogup.setOnClickListener(new View.OnClickListener() {
28             @Override
29             public void onClick(View view) {
30                 SharedPreferences sp = getSharedPreferences(strLogInfo, MODE_APPEND);
31                 SharedPreferences.Editor editor = sp.edit();
32
33                 editor.putString("UserName", etName.getText().toString());
34                 editor.putString("Password", etPassword.getText().toString());
35                 editor.commit();
36                 Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_LONG).show();
37             }
38         });
39         btnLogin.setOnClickListener(new View.OnClickListener() {
40             @Override
41             public void onClick(View view) {
42                 SharedPreferences sp = getSharedPreferences(strLogInfo, MODE_APPEND);
43                 String name = sp.getString("UserName", "");
44                 String passwd = sp.getString("Password","");
45                 if(etName.getText().toString().equals(name) && etPassword.getText().toString().equals(passwd)){
46                     Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_LONG).show();
47                 } else{
48                     Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_LONG).show();
49                 }
50             }
51         });
52
53     }
54 }
时间: 2024-10-21 21:33:51

Android开发手记(16) 数据存储一 SharedPreferences的相关文章

Android开发手记(20) 数据存储五 网络存储

Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 安卓的网络存储比较简单,因为Android提供的 Uri 和 Intent 可以帮助我们完成大多数任务. 一.发送邮件 首先,我们来看一下如何写一个发邮件的程序.前提是需要在系统邮件程序中配置好邮件发送的账户.由于发送邮件需要访问网络,所以我们需要添加如下权限: <uses-permission android:name="

Android开发系列之数据存储(一)

  Android开发中,数据存储主要有五种:网络.数据库.SharePreferences.文件以及Content Provider.   . 数据库    Android中的数据库最常用的是Sqlite. 使用Sqlite进行数据存储,可分为以下几步:    . 继承SqliteOpenHelper    . 整理4个构造方法    . 重写onCreate与onUpgrade      public class DownDBHelper extends SQLiteOpenHelper {

【Android应用开发技术:数据存储】SharedPreferences

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 应用程序一般都会涉及数据的输入和输出,应用程序的参数设置.程序运行状态数据等等这些都需要保存的外部存储器上,如果有大量数据需要存储则需要借助数据库,如果只有少量的数据需要保存,而且这些数据格式简单,则可以使用Sharedreferences来进行保存. SharedPrefe

Android开发笔记之: 数据存储方式详解

无论是神马平台,神马开发环境,神马软件程序,数据都是核心.对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用.总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络

Android开发-API指南-数据存储

Storage Options 英文原文:http://developer.android.com/guide/topics/data/data-storage.html 采集日期:2015-02-06 存储方式概述 用于简单数据的 Shared Preference 用于私有数据的内部存储 用于大型公开数据的外部存储 用于结构化数据的 SQLite 数据库 在本文中 使用 Shared Preference 使用内部存储 使用外部存储 使用数据库 使用网络连接 参阅 Content Provi

android开发系列之数据存储

在我们的android实际开发过程,必不可少的一种行为操作对象就是数据.有些数据,对于用户而言是一次性的,这就要求我们每次进到App的时候,都需要去刷新数据.有些数据,对于用户而言又是具有一定时效性的,比如用户账号数据.这种情况下,就要求我们采用一定的数据保存措施,在这篇博客里面,我将为大家分享一些android里面常用的数据保存方法. 首先在android里面我们用的比较多的小数量存储方式可能就是SharedPreferences,那么什么是SharedPreferences呢?为了保存软件的

Android开发系列之数据存储(二)

上一篇记载了Android开发数据库与Sharepreferences的基本使用,该篇主要讲述下文件的存储方式.   .文件    文件存储方式在Android开发中几乎是必不可少的,常用的文件磁盘缓存,字符串文件缓存以及xml文件缓存等. .文件读写 文件的读写主要有几种:多媒体文件以流的形式,文本文件以字符串的形式等. .将流写入文件 /** * 将InputStream保存到文件 * * @param context * @param in * @param fileLength * @p

Android 数据存储之 SharedPreferences储存

------------------------------------------SharedPreferences存储-------------------------------------------- SharedPreferences 使用键值对方式来存储数据的.当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出. SharedPreferences 支持多种不同数据类型的存储,可以按照需要取出数值型,或者字符型的数据. ----

Android数据存储-通过SharedPreferences实现记住密码的操作

在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过SharedPreferences实现记住密码的操作 一.首先:介绍下什么是SharedPreferences? SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置. 二.介绍了SharedPreferences,我们将通过记住SharedPrefe