Android下的数据储存方式
安卓系统默认提供了一下几种数据储存的方式:
- Shared Preferences
- 内部储存
- 外部储存
- SQLite数据库
- 保存到网络服务器
使用Shared Preferences
Shared Preferences类主要用于保存键值对的数据类型。我们可以使用它保存一些简单的数据类型。
获得SharedPreferences对象有两种方法:
- 通过getSharedPreferences()方法
- 通过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下的数据储存方式的更多相关文章
- Android下的数据储存方式(三)
Android下最好的数据储存方式:关系型数据库sqlite. 数据库的创建:使用SqliteOpenHelper类 结合SqliteOpenHelper类和SQLiteDatabase类的帮 ...
- Android下的数据储存方式( 二)
在上一篇文章中我们介绍了SharedPreferences的使用方法. 今天我们继续介绍另一种储存数据的方式:使用内部储存和外部储存 每一个Android设备都拥有两个数据储存区域:外部储存和外部储存 ...
- Android下的数据存储与訪问 --- 以文件的形式
Android下的数据存储与訪问 --- 以文件的形式 1.1 储存文件存放在手机内存中: // *** 储存数据到 /data/data/包名/files/jxn.txt文件里 String dat ...
- 关系型数据库与HBase的数据储存方式差别
现在Bigtable型(列族)数据库应用越来越广,功能也非常强大. 可是非常多人还是把它当做关系型数据库在使用,用原来关系型数据库的思维建表.存储.查询. 本文以hbase举例讲述数据模式的变化. 传 ...
- Android笔记:数据储存
1.文件存储 文件存储是Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据. ...
- Android中的数据储存
数据的储存是一个十分重要的功能,它涉及到各种类型的数据,各种的储存方式,今天就接触了Android中数据储存的简单应用,有一种方式是可以将存入的数据原封不动的存储起来,这里要用到openfileout ...
- Android 里的数据储存
数据持久化 关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类: 本地储存(也称之为数据持久化, ...
- android中的数据存取-方式一:preference(配置)
这种方式应该是用起来最简单的Android读写外部数据的方法了.他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单. 透明的方式来保存一些用户个 ...
- android下的数据存储
android下数据存储的几种方式:(简单讨论) 1.文件 举例:登陆时“记住密码” 因为是基于Linux系统,直接建文件,文件会出现在项目工程:而手机登陆时,应该把文件放在手机里,通常数据放在dat ...
随机推荐
- 思科ACI是一种什么样的技术?
术语: SDN:Software Defined Network,软件定义网络 ACI:Application Centric Infrastracture,以应用为中心的基础网络架构 Fabric: ...
- [c] base64
/ * Program: * base64 encode & decode * Author: * brant-ruan * Date: * 2016-02-29 * Usage: * Enc ...
- ComboBox的联动
窗体搭建: 实现功能: 加载年级下拉框 选中年级时加载出科目下拉框 加载年级下拉框: 第一步,在DAL层中写一个方法,检索所有的年级名称集合,返回的是泛型集合List<> public L ...
- Linux下监听或绑定(bind)843端口失败
问题:写了一个程序,尝试在843端口监听,结果在执行bind的时候失败了 原来,系统不允许用户程序在1-1024端口监听,因为他们是知名端口. 解决办法: 换成root用户,即可成功bind.(ubu ...
- 菜鸟的IT生活4
今天主要复习了以前的内容,输入输出,数据类型,运算符,顺序语句,分支语句等等,把几个不太连贯跟没上传过的传一下,以后加深下印象,加油!
- java io (一)
对于文件内容的操作主要分为两大类 分别是:字符流 字节流 其中,字符流有两个抽象类:Writer Reader 其对应子类FileWriter和FileReader可实现文件的读写操作 Buffe ...
- Linux字符设备驱动解析
1.驱动即是一个内核模块,需要模块初始化函数 module_init() module_exit() 2.分配cdev struct cdev dev; 3.初始化cdev并定义file_operat ...
- RecyclerView,CardView导入和使用(Demo)
简介: 这篇文章是ANDROID L——Material Design详解(UI控件)的一个补充或者说是应用实例,如果有时间建议大家稍微浏览一下上篇文章. 本文主要介绍Android L新增加的两个U ...
- oracle的substr函数的用法
oracle的substr函数的用法 取得字符串中指定起始位置和长度的字符串 substr( string, start_position, [ length ] ) 如: substr( ...
- c#匿名类,匿名对象
何谓匿名类,其实本质和普通定义的类一样,只不过是由系统的编译器来完成的,首先举个例子. 一般情况 //声明一个类,包含贴别多的字段 public class Person() { public str ...