目錄
簡單使用:
儲存物件:
參考:
AIDL支援的資料型別
bundle可傳遞資料型別:
intent可傳遞資料型別:
首頁 Java Java基礎 sharedpreferences可以儲存什麼資料類型

sharedpreferences可以儲存什麼資料類型

Jun 03, 2021 pm 02:51 PM
資料類型

SharedPreferences只能保存簡單類型的數據,只能儲存string,int,float,long和boolean資料類型。如果需要存取比較複雜的資料類型例如類別或影像,則需要對這些資料進行編碼。

sharedpreferences可以儲存什麼資料類型

本教學操作環境:windows7系統、java10版、Dell G3電腦。

日常開發中我們常常要用到保存數據,Android中常用的存儲方式有SQLite,sharedPreferences 等,當然也有各自的應用場景,前者適用於保存較多數據的情形,後者責傾向於保存使用者偏好設定例如某個checkbox的選擇狀態,使用者登入的狀態、設定訊息,實現記住密碼功能等等,都是以鍵值對的形式進行的檔案讀取。

但是每儲存一個資料都要提供一個key,如果要儲存多個資料那豈不是要寫多個key?例如我們要保存一個用戶的登入訊息,例如用戶暱稱,個性簽名,登入時間………尼瑪我一條數據寫一個的話我都可以玩一盤擼啊擼了反正我是受不了那麼我們能否將使用者資訊封裝起來,統一以一個key來保存呢?答案是肯定可以的~
Java類別庫中提供的位元組輸入輸出流可以輕鬆幫我們完成任意類型到String的可逆轉換,繼而我們就可以保存到Share中了~

SharedPreferences只能保存簡單類型的數據,例如四種基本類型(int,float,long,boolean) String。如果需要存取比較複雜的資料類型例如類別或影像,則需要對這些資料進行編碼,通常將其轉換成Base64編碼,然後將轉換後的資料以字串的形式保存在XML檔案中。

sharedpreferences可以儲存什麼資料類型

簡單使用:

#可儲存的類型:

string,int,float,long,boolean

		//获取sharedPreferences对象
        SharedPreferences sharedPreferences = getSharedPreferences("zjl", Context.MODE_PRIVATE);
        //获取editor对象
        SharedPreferences.Editor editor = sharedPreferences.edit();//获取编辑器
        //存储键值对
        editor.putString("name", "周杰伦");

        editor.putInt("age", 24);
        editor.putBoolean("isMarried", false);
        editor.putLong("height", 175L);
        editor.putFloat("weight", 60f);

        editor.putStringSet("where", set);
        //提交
        editor.commit();//提交修改





        SharedPreferences sharedPreferences = getSharedPreferences("zjl", Context.MODE_PRIVATE);
        //getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
        String name = sharedPreferences.getString("name", "");
        int age = sharedPreferences.getInt("age", 1);
登入後複製

儲存物件:

方法一:fastJson/Gson/Jackson將物件轉換成字串,然後再儲存。

方法二:ObjectOutputStream將物件轉換成流,base64將流轉成字串,然後再儲存。

package com.example.draggridview;

/**
 * Created by Administrator on 2017/6/19.
 */

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Base64;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
 * SharedPreferences工具类,可以保存object对象
 */
public class SharedPreferenceUtil {

    /**
     * 存放实体类以及任意类型
     *
     * @param context 上下文对象
     * @param key
     * @param obj
     */
    public static void putBean(Context context, String key, Object obj) {
        if (obj instanceof Serializable) {// obj必须实现Serializable接口,否则会出问题
            try {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                ObjectOutputStream oos = new ObjectOutputStream(baos);
                oos.writeObject(obj);
                String string64 = new String(Base64.encode(baos.toByteArray(), 0));
                SharedPreferences.Editor editor = getSharedPreferences(context).edit();
                editor.putString(key, string64).commit();
            } catch (IOException e) {
                e.printStackTrace();
            }

        } else {
            throw new IllegalArgumentException("the obj must implement Serializble");
        }

    }

    public static Object getBean(Context context, String key) {
        Object obj = null;
        try {
            String base64 = getSharedPreferences(context).getString(key, "");
            if (base64.equals("")) {
                return null;
            }
            byte[] base64Bytes = Base64.decode(base64.getBytes(), 1);
            ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);
            ObjectInputStream ois = new ObjectInputStream(bais);
            obj = ois.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
    
}
登入後複製

參考:

使用SharedPreference保存list數據,其實可以保存Object物件

Android開發筆記-SharedPreferences 儲存實體類別以及任意型別

Android資料持久化之SharedPreference

AIDL支援的資料型別

  1. 所有基礎型別(byte/short/int/long/float/double/boolean/char 等)

  2. String,List,Map,CharSequence等類別

  3. #其他AIDL介面類型

  4. 所有Parcelable的類別

bundle可傳遞資料型別:

#1、byte/short/int/long/float/double/boolean/char等八種基本型別或它們對應的陣列

2、String、charsequence或對應的數組,也可以是物件()或物件陣列。

3、Bundle.putSerializable(Key,Object); //實作Serializable介面的物件

4、Bundle.putParcelable(Key, Object); //實作Parcelable介面的物件

sharedpreferences可以儲存什麼資料類型

sharedpreferences可以儲存什麼資料類型

sharedpreferences可以儲存什麼資料類型

sharedpreferences可以儲存什麼資料類型

intent可傳遞資料型別:

intent傳遞類型(abcd)

A、Serializable     B、charsequence     C、Parcelable  D、Bundle

1、八種基本資料型別及其對應陣列

2、String/Charsequence 及其對應陣列

3、Parcelable 及其對應陣列/Serializable

4、bundle/intent

sharedpreferences可以儲存什麼資料類型

sharedpreferences可以儲存什麼資料類型

sharedpreferences可以儲存什麼資料類型

#相關免費學習推薦:java基礎教學

#

以上是sharedpreferences可以儲存什麼資料類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL資料庫中性別欄位應該使用什麼資料類型? MySQL資料庫中性別欄位應該使用什麼資料類型? Mar 14, 2024 pm 01:21 PM

在MySQL資料庫中,性別欄位通常可以使用ENUM類型來儲存。 ENUM是一種枚舉類型,它允許我們在一組預先定義的值中選擇一個作為欄位的值。在表示性別這樣一個固定且有限的選項時,ENUM是一個很好的選擇。讓我們來看一個具體的程式碼範例:假設我們有一個名為"users"的表,其中包含了使用者的信息,包括性別。現在我們要為性別創建一個字段,我們可以這樣設計表結構:CRE

php8資料類型怎麼轉換 php8資料類型怎麼轉換 Nov 16, 2023 pm 02:51 PM

php8資料型別的方法有字串轉換為整數、整數轉換為字串、字串轉換為浮點數、浮點數轉換為字串、陣列轉換為字串、字串轉換為陣列、布林值轉換為整數、整數轉換為布林值和變數類型判斷和轉換。詳細介紹:1、字串轉換為整數包括intval()函數和(int)強制型別轉換;2、整數轉換為字串包括strval()函數和(string)強制型別轉換;3、字串轉換為浮點數等等。

MySQL中最適合用於性別欄位的資料類型是什麼? MySQL中最適合用於性別欄位的資料類型是什麼? Mar 15, 2024 am 10:24 AM

在MySQL中,最適合用於性別欄位的資料類型是ENUM枚舉類型。 ENUM枚舉類型是一種允許定義一組可能取值的資料類型,性別欄位適合使用ENUM類型是因為性別通常只有兩個取值,即男性和女性。接下來,我將透過具體的程式碼範例來展示如何在MySQL中建立一個性別欄位並使用ENUM枚舉類型儲存性別資訊。以下是操作步驟:首先,在MySQL中建立一個名為users的表格,包括

python資料型別有哪些 python資料型別有哪些 Dec 11, 2023 pm 04:17 PM

python資料型態有:1、整數;2、浮點型;3、複數;4、布林型;5、字串;6、列表;7、元組;8、集合;9、字典。詳細介紹:1、整數,用來表示整數,可以是正數、負數或零,在P​​ython中,整數可以表示的數值範圍是平台特定的;2、浮點型,用來表示帶有小數部分的數字,浮點型可以表示正數、負數和零;3、複數,用來表示複數,包括實部和虛部;4、布林型,用來表示布林值等等。

Python 語法的心智圖:深入理解程式碼結構 Python 語法的心智圖:深入理解程式碼結構 Feb 21, 2024 am 09:00 AM

python憑藉其簡單易讀的語法,廣泛應用於廣泛的領域。掌握Python語法的基礎架構至關重要,既可以提高程式效率,又能深入理解程式碼的運作方式。為此,本文提供了一個全面的心智圖,詳細闡述了Python語法的各個面向。變數和資料類型變數是Python中用於儲存資料的容器。心智圖展示了常見的Python資料類型,包括整數、浮點數、字串、布林值和列表。每個資料類型都有其自身的特性和操作方法。運算符運算符用於對資料類型執行各種操作。心智圖涵蓋了Python中的不同運算子類型,例如算術運算子、比

MySQL中布林類型的使用方法詳解 MySQL中布林類型的使用方法詳解 Mar 15, 2024 am 11:45 AM

MySQL中布林類型的使用方法詳解MySQL是一種常用的關聯式資料庫管理系統,在實際應用中經常需要使用布林類型來表示邏輯上的真假值。 MySQL中布林類型有兩種表示法:TINYINT(1)和BOOL。本文將詳細介紹MySQL中布林類型的使用方法,包括布林類型的定義、賦值、查詢和修改等操作,同時結合具體的程式碼範例進行說明。 1.布林類型的定義在MySQL中,可

MySQL中性別欄位最佳資料類型選擇是什麼? MySQL中性別欄位最佳資料類型選擇是什麼? Mar 14, 2024 pm 01:24 PM

在設計資料庫表時,選擇合適的資料類型對於效能最佳化和資料儲存效率非常重要。在MySQL資料庫中,儲存性別欄位的資料類型真是沒有所謂的最佳選擇,因為性別欄位一般只有兩個取值:男或女。但是為了效率和節省空間,我們可以選擇合適的資料類型來儲存性別欄位。在MySQL中,儲存性別欄位最常用的資料類型是枚舉類型。枚舉類型是一種能夠把欄位的值限定在一個有限的集合內的資料型別

C語言的基本語法和資料類型介紹 C語言的基本語法和資料類型介紹 Mar 18, 2024 pm 04:03 PM

C語言是一種廣泛使用的電腦程式語言,具有高效、靈活和強大的特點。要熟練使用C語言進行編程,首先需要了解其基本語法和資料類型。本文將介紹C語言的基本語法和資料類型,並舉例說明。一、基本語法1.1註解在C語言中,可以使用註解來對程式碼進行說明,以便於理解和維護。註解可以分為單行註解和多行註解。 //這是單行註解/*這是多行註解*/1.2關鍵字C語

See all articles