安卓系统默认提供了一下几种数据储存的方式:

  1. Shared Preferences
  2. 内部储存
  3. 外部储存
  4. SQLite数据库
  5. 保存到网络服务器

 

使用Shared Preferences

      Shared Preferences类主要用于保存键值对的数据类型。我们可以使用它保存一些简单的数据类型。

      

获得SharedPreferences对象有两种方法:

  1. 通过getSharedPreferences()方法
  2. 通过getPreferences()方法

 

上面两种方法的分别主要是:

       第一种方法可以创建多个文件来保存数据

       第二种方法只能创建一个文件保存数据

 

我们先来创建一个这样的布局:

布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <EditText
android:id="@+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/> <EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/> <Button
android:id="@+id/write"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="write to file"/> </LinearLayout>

 

布局准备好后就可以获取SharedPreferences对象写入数据:

package com.whathecode.storageoptinos;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends Activity
{ @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); final EditText namefield = (EditText) findViewById(R.id.username);
final EditText agefield = (EditText) findViewById(R.id.age); Button btnWrite = (Button) findViewById(R.id.write); // 获取SharedPreferences对象,文件权限为私有
SharedPreferences spf = getSharedPreferences("record", MODE_PRIVATE);
// 获取编辑器
final SharedPreferences.Editor editor = spf.edit(); btnWrite.setOnClickListener(new View.OnClickListener()
{ @Override
public void onClick(View v)
{
String username = namefield.getText().toString();
String age = agefield.getText().toString(); editor.putString("username", username);
editor.putString("age", age);
if (editor.commit()) // 当成功写入数据返回true
{
Toast.makeText(getBaseContext(), "文件已写入",
Toast.LENGTH_SHORT).show();
}
}
}); }
}

上面的代码中,我们主要使用SharedPreferences的内部类Editor类

我们主要使用这个类的几个Put*方法

 

当调用完这些方法后我们就可以使用commit()或者apply()方法开始写数据

需要注意的是,当多个Editor对同一个文件进行写数据的时候,后完成的一个Editor的结果将覆盖前一个的结果

commit和apply方法的区别是:commit写入成功返回true,而apply没有返回值。

当我们不在乎返回值的时候可以调用apply()方法写数据。

 

运行结果:

 

数据写入后我们就可以在Eclipse的ddms试图中查看是否有写入成功

数据保存在 /data/data/包名/shared_prefs目录下

Android下的数据储存方式的更多相关文章

  1. Android下的数据储存方式(三)

      Android下最好的数据储存方式:关系型数据库sqlite.   数据库的创建:使用SqliteOpenHelper类 结合SqliteOpenHelper类和SQLiteDatabase类的帮 ...

  2. Android下的数据储存方式( 二)

    在上一篇文章中我们介绍了SharedPreferences的使用方法. 今天我们继续介绍另一种储存数据的方式:使用内部储存和外部储存 每一个Android设备都拥有两个数据储存区域:外部储存和外部储存 ...

  3. Android下的数据存储与訪问 --- 以文件的形式

    Android下的数据存储与訪问 --- 以文件的形式 1.1 储存文件存放在手机内存中: // *** 储存数据到 /data/data/包名/files/jxn.txt文件里 String dat ...

  4. 关系型数据库与HBase的数据储存方式差别

    现在Bigtable型(列族)数据库应用越来越广,功能也非常强大. 可是非常多人还是把它当做关系型数据库在使用,用原来关系型数据库的思维建表.存储.查询. 本文以hbase举例讲述数据模式的变化. 传 ...

  5. Android笔记:数据储存

    1.文件存储 文件存储是Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据. ...

  6. Android中的数据储存

    数据的储存是一个十分重要的功能,它涉及到各种类型的数据,各种的储存方式,今天就接触了Android中数据储存的简单应用,有一种方式是可以将存入的数据原封不动的存储起来,这里要用到openfileout ...

  7. Android 里的数据储存

    数据持久化 关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类: 本地储存(也称之为数据持久化, ...

  8. android中的数据存取-方式一:preference(配置)

    这种方式应该是用起来最简单的Android读写外部数据的方法了.他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单. 透明的方式来保存一些用户个 ...

  9. android下的数据存储

    android下数据存储的几种方式:(简单讨论) 1.文件 举例:登陆时“记住密码” 因为是基于Linux系统,直接建文件,文件会出现在项目工程:而手机登陆时,应该把文件放在手机里,通常数据放在dat ...

随机推荐

  1. 思科ACI是一种什么样的技术?

    术语: SDN:Software Defined Network,软件定义网络 ACI:Application Centric Infrastracture,以应用为中心的基础网络架构 Fabric: ...

  2. [c] base64

    / * Program: * base64 encode & decode * Author: * brant-ruan * Date: * 2016-02-29 * Usage: * Enc ...

  3. ComboBox的联动

    窗体搭建: 实现功能: 加载年级下拉框 选中年级时加载出科目下拉框 加载年级下拉框: 第一步,在DAL层中写一个方法,检索所有的年级名称集合,返回的是泛型集合List<> public L ...

  4. Linux下监听或绑定(bind)843端口失败

    问题:写了一个程序,尝试在843端口监听,结果在执行bind的时候失败了 原来,系统不允许用户程序在1-1024端口监听,因为他们是知名端口. 解决办法: 换成root用户,即可成功bind.(ubu ...

  5. 菜鸟的IT生活4

    今天主要复习了以前的内容,输入输出,数据类型,运算符,顺序语句,分支语句等等,把几个不太连贯跟没上传过的传一下,以后加深下印象,加油!

  6. java io (一)

    对于文件内容的操作主要分为两大类 分别是:字符流 字节流 其中,字符流有两个抽象类:Writer   Reader 其对应子类FileWriter和FileReader可实现文件的读写操作 Buffe ...

  7. Linux字符设备驱动解析

    1.驱动即是一个内核模块,需要模块初始化函数 module_init() module_exit() 2.分配cdev struct cdev dev; 3.初始化cdev并定义file_operat ...

  8. RecyclerView,CardView导入和使用(Demo)

    简介: 这篇文章是ANDROID L——Material Design详解(UI控件)的一个补充或者说是应用实例,如果有时间建议大家稍微浏览一下上篇文章. 本文主要介绍Android L新增加的两个U ...

  9. oracle的substr函数的用法

    oracle的substr函数的用法 取得字符串中指定起始位置和长度的字符串   substr( string, start_position, [ length ] ) 如:     substr( ...

  10. c#匿名类,匿名对象

    何谓匿名类,其实本质和普通定义的类一样,只不过是由系统的编译器来完成的,首先举个例子. 一般情况 //声明一个类,包含贴别多的字段 public class Person() { public str ...