安卓的五种存储方式

本文详细介绍了安卓的三种主要存储方式:SharedPreferences用于轻量级配置存储,SQLite用于数据库操作,包括增删改查,文件存储则分为内部存储和外部存储(SD卡)。文章详细阐述了每种存储方式的使用场景、操作步骤和注意事项,包括自定义帮助类和实际操作示例。
摘要由CSDN通过智能技术生成

安卓的存储方式有5种,分别为:

  1. SharedPrefences;
  2. SQLite数据库
  3. 文件存储
  4.  网络存储
  5.  ContentProvider

思维导图

 1. 数据存储的类型和存放位置

应用程序一般有一下几种类型:

file-普通的文件存储
database-数据库文件(.db文件)
sharedPreference-配置数据(.xml文件)
cache-图片缓存文件

应用数据的存放位置:

com.xxx.xxx 为自定义的包名

/data/data/com.xxx.xxx/cache - 应用内缓存(注:对应方法getCacheDir())
/data/data/com.xxx.xxx/databases - 应用内数据库
/data/data/com.xxx.xxx/shared_prefs - 应用内配置文件
/data/data/com.xxx.xxx/files - 应用内文件(注:对应方法getFilesDir())
SD卡的文件(开发者自定义的)

 

2. SharedPreferences存储数据

1)使用范围

Android 提供了一个轻量级的存储类 SharedPreferences使用 XML 格式保存一些键值对数据

当我们的应用想要保存用户的一些偏好参数,比如是否自动登陆,是否记住账号密码,是否在 Wifi 下才能 联网等相关信息,我们这些信息为用户的偏好 设置

 

2)SharedPrefences 的使用步骤

  1. 首先实例化一个 SharedPreferences 对象

    SharedPreferences sp = mContext.getSharedPreferences("filename", Context.MODE_PRIVATE);
    
    1. mContext 就是上下文,如果在 Activity 可以使用 Activity.this 或者 getApplicationContext() 方法获得

    2. filename 就是要保存的文件名,不要加上 .xml 扩展名,因为系统自己会加上

    3. Context.MODE_PRIVATE 私有的文件模式,一般都用 Context.MODE_PRIVATE

  2. 调用 sp.edit() 获取 sp 对象的写编辑器

    SharedPreferences.Editor editor = sp.edit();
    
  3. 调用 editor.putXxxx() 写数据操作 , Xxx 表示类型

    editor.putString("username","imyufei")
    
  4. 调用 editor.commit() 提交和保存数据

  5. 调用 sp.getXxxx() 去处 Xxx 类型的数据

  6. 调用 sp.remove(key) 可以删除 key 对应的数据

其中文件读取的模式有4种, 其中2 种是废弃的:

模式 说明
Context.MODE_PRIVATE 默认的操作模式,表示该文件是私有文件,只能够被应用本身访问,写入的内容会覆盖原有的数据
Context.MODE_APPEND 会检查文件是否存在,如果存在则把内容追加到文件末尾,否则新建一个文件进行写
Context.MODE_WORLD_READABLE 废弃 当前文件可以被其它 APP 读取
Context.MODE_WORLD_WRITEABLE废弃 当前文件可以被其它 APP 写入

这些模式可以使用 竖线(|) 叠加,比如

openFileOutput("site.txt",Context.MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE)

Editor有如下主要重要方法:

  1.                 SharedPreferences.Editor clear():清空SharedPreferences里所有数据
  2.                 SharedPreferences.Editor putXxx(String key , xxxvalue): 向SharedPreferences存入指定key对应的数据,其中xxx 可以是boolean,float,int等各种基本类型据
  3.                 SharedPreferences.Editor remove(): 删除SharedPreferences中指定key对应的数据项
  4.                 boolean commit(): 当Editor编辑完成后,使用该方法提交修改

 

3)具体实现例子

1. 自定义一个帮助读取的类

package com.example.newdemo.storagefile;

import android.content.Context;
import android.content.SharedPreferences;

public class SharedPrehelper {

    private Context context;

    public SharedPrehelper(Context context){
        this.context = context;
    }

    public void save(String key, String value){
        // 实例化一个 sp 对象
        SharedPreferences sharedPreferences = context.getSharedPreferences("my_sp", Context.MODE_PRIVATE);

        // 调用 sp.edit() 获取 sp 对象的写编辑器
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.commit();
    }

    // 获取数据
    public String read(String key){
        SharedPreferences sharedPreferences = context.getSharedPreferences("my_sp", Context.MODE_PRIVATE);
        return sharedPreferences.getString(key, "");
    }

}

2. 设置主activity

package com.example.newdemo.storagefile;

import androidx.appcompat.app.AppCompatActivity;

import android.app.backup.SharedPreferencesBackupHelper;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.example.newdemo.R;
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值