iis服务器助手广告
返回顶部
首页 > 资讯 > 移动开发 >使用SharedPreferences在Android存储对象详细代码
  • 158
分享到

使用SharedPreferences在Android存储对象详细代码

2024-04-02 19:04:59 158人浏览 安东尼
摘要

为什么不用sqlite? 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLite可能是矫枉过正(带来了更多的开销)对于一些简单的用例,或者其用法和语句可能会完全不

为什么不用sqlite? 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLite可能是矫枉过正(带来了更多的开销)对于一些简单的用例,或者其用法和语句可能会完全不喜欢。其他Android ORM 框架(ORMLite, greenDAO, Sugar ORM, ActiveAndroid, 等)或NoSQL移动数据库,如CoucHBase精简版(Beta版在此时间)。 Couchbase精简版基本上是一个JSON数据库,它们旨在降低复杂性,但是同时又违背了抽象漏洞定律(所有不证自明的抽象都是有漏洞的)

 代码如下:



public class UserPrefs{

    
    private static final String PREFS_NAME = "com.our.package.UserPrefs";


 
    
    private static SharedPreferences settings;

   
   private static SharedPreferences.Editor editor;


 
   
   public UserPrefs(Context ctx){
        if(settings == null){
           settings = ctx.getSharedPreferences(PREFS_NAME,
                                               Context.MODE_PRIVATE );
        }
       
        editor = settings.edit();    
   }
   //...
}

其中User代码如下:



public class User{

    private int id; // used for object storage
    private String userName;
    private boolean reGIStered;
    private double score;


 
    
   public User(int id, String userName, boolean registered, double score){
       this.id = id;
       this.userName = userName;
       this.registered = registered;
       this.score = score;
   }
   // getters and setters here...
}

SharedPreferences看成一个Map存储,

CRUD操作如下:



 private static final String KEY_USERNAME = "com.our.package.KEY_USERNAME";
 private static final String KEY_REGISTERED = "com.our.package.KEY_REGISTERED";
 private static final String KEY_SCORE = "com.our.package.KEY_SCORE";


public void setUser(User user){
    if(user == null)
      return; // don't bother


 
    int id = user.getId();
    editor.putString(
               getFieldKey(id, KEY_USERNAME),
               user.getUsername() );
    editor.putBoolean(
               getFieldKey(id, KEY_REGISTERED),
               user.isRegistered() );
    editor.putFloat(
               getFieldKey(id, KEY_SCORE),
               user.getScore() );

    editor.commit();
}


public User getUser(int id){
    String name = settings.getString(
                  getFieldKey(id, KEY_USERNAME),
                  "" ); // default value
    boolean registered =  settings.getBoolean(
                 getFieldKey(id, KEY_REGISTERED),
                 false); // default value
    double score =  settings.getFloat(
                 getFieldKey(id, KEY_SCORE),
                 0); // default value

    return new User(id, name, registered, score);
}


public void deleteUser(User user){
   if(user == null)
      return; // don't bother

   int id = user.getId();
   editor.remove( getFieldKey(id, KEY_USERNAME) );
   editor.remove( getFieldKey(id, KEY_REGISTERED) );
   editor.remove( getFieldKey(id, KEY_SCORE) );

   editor.commit();
}

主键是通过getFieldKey方法, getFieldKey() 给我们每个用户每个字段的唯一标识。



public static final String KEY_PREFIX =
            "com.our.package.KEY";


private String getFieldKey(int id, String fieldKey) {
       return  KEY_PREFIX + id + "_" + fieldKey;
}

客户端调用如下:


// get a SharedPreferences instance
UserPrefs prefs = new UserPrefs( this.getApplicationContext() );

// get id from server or local storage
// then find User with that id
User user = prefs.getUser(id);

// operations on User, e.g.
user.setRegistered(true);
user.setScore(new_score);

// save
prefs.setUser(user);
// ...or delete
prefs.deleteUser(user),

 Gson

Gson 是一个Java库,它提供了简单的tojsON()fromJson()方法来转换Java对象到JSON格式,反之亦然。我们可以简单地存储JSON格式整个字符串SharedPreferences


 // convert User object user to JSON format
Gson gson = new Gson();
String user_json = gson.toJson(user);

// store in SharedPreferences
String id = "" + user.getId(); // get storage key
editor.putString(id, user_json);
editor.commit();

// time flies...

// do the reverse operation
user_json = settings.getString(id, "");
user = gson.fromJson(user_json, User.class);

到此这篇关于使用SharedPreferences在Android存储对象详细代码的文章就介绍到这了,更多相关使用SharedPreferences在Android存储对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 使用SharedPreferences在Android存储对象详细代码

本文链接: https://www.lsjlt.com/news/156418.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用SharedPreferences在Android存储对象详细代码
    为什么不用SQLite? 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLite可能是矫枉过正(带来了更多的开销)对于一些简单的用例,或者其用法和语句可能会完全不...
    99+
    2024-04-02
  • 如何使用SharedPreferences在Android存储对象
    这篇文章给大家介绍如何使用SharedPreferences在Android存储对象,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为什么不用SQLite 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLit...
    99+
    2023-06-25
  • Android 文件存储与SharedPreferences存储方式详解用法
    目录持久化技术简介文件存储1. 将数据存储到文件中2. 从文件中读取数据SharedPreferences 存储1. 将数据存储到 SharedPreferences 中2. 从 S...
    99+
    2024-04-02
  • 怎么在Android中利用SharedPreferences实现存储
    怎么在Android中利用SharedPreferences实现存储?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SharedPreferences 特点即便是...
    99+
    2023-05-31
    android sharedpreferences roi
  • 阿里云oss对象存储使用详细步骤
    作为一个开发人员,怎么能没有一个属于一个自己的网站,如果你打算做一个图片和视频展示或者其他网站,如果下面这篇文章能帮助到你,帮忙点击赞,欢迎大家评论交流。 1、首先在阿里云购买ECS...
    99+
    2024-04-02
  • Android 使用 SharedPreferences 保存少量数据的实现代码
    1 SharedPreferences 介绍 SharedPreferences是使用键值对的方式来存储数据的 SharedPreferences share = getShar...
    99+
    2024-04-02
  • GO 存储 API 对象:如何在代码中实现?
    GO 是一种功能强大的编程语言,它在编写高性能应用程序方面非常有用。GO 应用程序通常需要访问存储库来读取或写入数据,因此 GO 存储 API 对象是必不可少的。在本文中,我们将介绍如何在代码中实现 GO 存储 API 对象。 一、了解 ...
    99+
    2023-06-28
    存储 api 对象
  • ceph集群RadosGW对象存储使用详解
    目录集群背景:什么是对象存储ceph对象存储的构成RadosGW存储池作用RadosGW常用操作详解新建一个子用户操纵radosgw需要先安装好python3环境,以及python的...
    99+
    2024-04-02
  • Spring使用注解存储和读取对象详解
    目录一、存储Bean对象配置扫描添加注解存储Bean对象注解使用范围Bean的命名五大类注解的关系为什么需要五大类注解二、方法注解@BeanBean重命名三、对象注入属性注入Sett...
    99+
    2023-05-16
    Spring注解存储和读取对象 Spring注解 Spring注解存储对象 Spring注解读取对象
  • 对象存储OSS之ossbrowser的使用
    对象存储OSS之ossbrowser的使用 一、OSS简介二、OSS工作原理三、ossbrowser浏览器安装及使用1、安装并登录ossbrowser(1)、下载并安装ossbrowser。(2)、以Windows系统为例,按如下步...
    99+
    2023-08-21
    前端 阿里云 服务器
  • PHP使用阿里云对象存储oss
    目录 1.使用composer安装依赖 2.编写代码 3.调用 4.遇到问题 (1) 上传成功 访问发现没有权限 (2) 接着访问,发现直接下载 (3) 上传文件 发现文件内容是空 5.自定义域名上传文件 (1) 配置: (2) 代码修改 ...
    99+
    2023-10-21
    php oss 对象存储
  • 如何使用对象存储服务Minio
    这篇文章主要介绍“如何使用对象存储服务Minio”,在日常操作中,相信很多人在如何使用对象存储服务Minio问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用对象存储服务...
    99+
    2024-04-02
  • redis怎么使用hash存储java对象
    你可以使用Redis的Hash数据结构来存储Java对象。在Java中,你可以将对象转换为JSON格式,然后将JSON字符串存储在R...
    99+
    2024-04-09
    redis hash java
  • 在android中使用缓存和脱机存储
    目录1、在android中使用缓存和脱机存储2、Offline storage离线存储1、在android中使用缓存和脱机存储   缓存可以加速你的应用程序,即使在网络不可用时,用户...
    99+
    2024-04-02
  • 如何在 Linux 上使用 Go 存储:一份详细教程
    在开发过程中,如何高效地存储和管理数据是非常重要的。而 Go 语言作为一门强类型的编程语言,其在数据存储和管理方面也有着出色的表现。在本篇文章中,我们将详细介绍如何在 Linux 上使用 Go 存储数据,并附带演示代码。 第一步:安装 M...
    99+
    2023-11-06
    存储 linux 教程
  • 你知道如何在 PHP 中使用对象存储算法吗?
    随着互联网的迅速发展,越来越多的网站和应用程序需要存储和处理大量的数据。传统的数据库存储方式已经不能满足现代应用的需求,因此越来越多的开发者开始转向对象存储算法。在本文中,我们将介绍如何在 PHP 中使用对象存储算法。 什么是对象存储算法?...
    99+
    2023-09-26
    对象 存储 编程算法
  • 如何在Go语言中使用对象文件存储系统?
    Go语言是一种快速、高效的编程语言,它在许多领域中都有着广泛的应用。在Go语言中,对象文件存储系统是一个非常重要的概念,它可以帮助我们更好地管理和存储数据。在本文中,我们将介绍如何在Go语言中使用对象文件存储系统。 一、什么是对象文件存储系...
    99+
    2023-09-30
    对象 文件 存储
  • GO 中的存储 API 对象:如何使用它?
    在 GO 中,存储 API 对象是一个非常重要的概念。它们是用于与持久化存储交互的接口,可以用于访问和操作数据库、文件系统、缓存等。本文将介绍 GO 中的存储 API 对象,并演示如何使用它们。 一、存储 API 对象的概述 存储 API...
    99+
    2023-06-28
    存储 api 对象
  • 如何使用Go语言操作对象存储?
    Go语言是一门功能强大的编程语言,可以用于开发各种类型的应用程序。其中,Go语言提供了一套非常方便的API,可以帮助我们轻松地操作对象存储。在本篇文章中,我们将会介绍如何使用Go语言来操作对象存储。 什么是对象存储? 对象存储是一种用于...
    99+
    2023-10-14
    对象 http git
  • Android中将Bitmap对象以PNG格式保存在内部存储中的方法
    在Android中进行图像处理的任务时,有时我们希望将处理后的结果以图像文件的格式保存在内部存储空间中,本文以此为目的,介绍将Bitmap对象的数据以PNG格式保存下来的方法。1、添加权限由于是对SD card进行操作,必不可少的就是为你的...
    99+
    2023-05-30
    android bitmap roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作