1.什么是数据存储
1.运行内存 == 电脑内存;
2.机身内部存储器 == 电脑硬盘;
手机内部存储器(核心文件夹)
1./system系统文件夹类似于Windows中的Windows文件夹。
2./data应用程序安装文件和数居文件( 存放在这个目录下的数据文件称之为内部存储)。
3./mnt/sdcard外部存储根文件夹,用于存放各种文件(存放在此目录中的文件称之为外部存储)。
4./storage/emulated/0外部存储根文件夹,有些手机存放在/mnt/sdcard 文件夹下,有些手机存放在/storage/emulated/0下。
什么是手机内存
手机内存:手机内存分为运行内存和机身内存,运行内存是指手机运行程序时的内存,机身内存是用来存储系统,应用文件以及其他文件的“硬盘”。
Android文件夹划分:存放在/data 目录下文件称之为外部存储。存放在/mnt或/storage或者其他可存储文件位置的目录称之为外部存储。
在商业APP中经常需要收集用户的信息,保存配置信息等,这些数据都必须以某种方式保存,不能丢失,并且能够有效,简洁地使用和更新处理,这种保存数据的方式称之为数据存储。
数据存储分类
1.SharedPreferences存储
2.File存储
3.数据库存储
SharedPreferences存储
SharedPreferences常用来存储一些轻量级的数据,以key-value( 键值对)形式存储数据,当用户卸载此应用程序时,数据会并清除。
File存储
1.内部存储
将文件存在/data目录下,称之为内部存储。Android系统提供了相应的API,可以直接把文件存在设备的内部存储内,通过Java的I/O流的方式进行读写,当用户卸载此应用程序时,内部存储的数据会一并清除。
2.外部存储
将文件存在用户自己添加的外部存储介质中(/data以外的目录),称之为外部存储,在Java中已经学过I/O流的知识,在Android中的操作和在Java学习I/O流时的操作基本一致。
数据库存储
当需要保存的数据量大,数据格式复杂时,需要用到数据库存储。
如何使用数据存储
1.使用SharedPreferences读写数据
2.使用File内部存储读写数据
什么是SharedPreferences存储
1.SharedPreferences是Android平台上一个轻量级的存储类,用来存储少量数据时简单,便捷(如:保存记住密码状态,设置开关状态等)。
2.以key—value( 键值对)形式存储数据,可以存储的数据类型为:String,float,int,long,boolean。
3.存储位置在/data/data/<包名>/shared_prefs目录下。
4.保存的数据以XML形式存储。
使用SharedPreferences写入数据步骤
1.获得使用SharedPreferences对象。
2.获得Editor对象。
3.通过Editor对象的putXXX函数,设置写入数据。
4.通过Editor对象的commit提交写入。
获取SharedPreferences对象
SharedPreferences对象:在有Context环境中使用getSharedPreferences方法获得
getSharedPreferences方法参数:
1.name:要保存的文件名
2.mode:
Context.MODE_PRIVATE:默认操作模式,代表该文件是私有数据,只能被应用本身访问。
Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
登录页面保存用户名密码实例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<EditText
android:id="@+id/Et1"
android:layout_width="match_parent"
android:layout_height="50dp" />
<EditText
android:id="@+id/Et2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:inputType="textPassword"/>
<CheckBox
android:id="@+id/Cb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/Cb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/Bt1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录"/>
</LinearLayout>
package com.example.pc.sharedpreferences;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private EditText Et1;
private EditText Et2;
private CheckBox Cb1;
private CheckBox Cb2;
private Button Bt1;
private int rememberFlag = 0;
private String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindID();
//从sp文件(mysp.xml)里取出“name”节点对应的值
SharedPreferences sharedPreferences = getSharedPreferences("mysp.xml",MODE_PRIVATE);
if (sharedPreferences != null){
//取值
String name = sharedPreferences.getString("name","");
password =sharedPreferences.getString("password","");
rememberFlag = sharedPreferences.getInt("remember_flag",0);
//赋值给Et1保存用户名
Et1.setText(name);
}
if (rememberFlag == 1){
Cb1.setChecked(true);
Et2.setText(password);
}
Bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = Et1.getText().toString();
String password = Et2.getText().toString();
//1.创建SharedPreferences对象
SharedPreferences spf = getSharedPreferences("mysp.xml",MODE_PRIVATE);
//2.创建Editor对象,写入值
SharedPreferences.Editor editor = spf.edit();
editor.putString("name",username);
if (Cb1.isChecked()){
//按下按钮
rememberFlag =1;
editor.putInt("remember_flag",rememberFlag);
editor.putString("password",password);
}else {
rememberFlag =0;
editor.putInt("remember_flag",rememberFlag);
}
//提交
editor.commit();
Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
}
});
}
private void bindID() {
Et1 = findViewById(R.id.Et1);
Et2 = findViewById(R.id.Et2);
Cb1 = findViewById(R.id.Cb1);
Cb2 = findViewById(R.id.Cb2);
Bt1 = findViewById(R.id.Bt1);
}
}