【day23】存local端 帐号 (SharedPreferences)

好的,因为我们有时候除了用Firebase之外,我们可能会用其它服务!而Firebase它的Auth除非有logout,否则它会保有登入的纪录~ 那如果我们有些服务是会需要记住local的资料呢?我们就可以用SharedPreferences来纪录资料!! 这次是额外的内容喔 小歇一下!!

依照 Key-Value的方式储存资料

一、在创建一个新的class


class SharedPreference(content: Context) {

private val sharedPreference = content.getSharedPreferences("帐密",0)

fun saveEmail(email: String){
sharedPreference.edit().putString("信箱",email).apply()
    }

fun savePassword(pass: String){
sharedPreference.edit().putString("密码",pass).apply()
    }

fun getEmail(): String?{
return sharedPreference.getString("信箱","")
    }
fun getPass(): String?{
return sharedPreference.getString("密码","")
    }
}

首先可以注意到,实例化 sharedPreference的方法

private val sharedPreference = content.getSharedPreferences("帐密",0)

其中的第一个参数是档案名称,若是已有该名称的档案後,就会在新增资料的时候在该档案新增资料,若无则直接创建新的

第二个参数,是mode,原本有许多模式,但由於隐私问题,其他mode几乎都被弃用(可让别的App存取或写入)。现在比较推荐是用 MODE_PRIVATE 这个模式,int值为 0,只限当前APP使用。

ps.若有需要共享资料,可以用 FileProvider

https://ithelp.ithome.com.tw/upload/images/20211008/201380171G6Shqadsn.png

接下来看到写入的方法,请使用 edit(),并在後面可以新增想要填入的值型态

(记住,都是Key-Value,所以这些里面的引数前面都是Key)

  • putFloat()
  • putString()
  • putInt()
  • putBoolean()
  • putLong()

接下来也可以注意到,最後面写了 apply(),储存值的方法有两种

  • commit: 立即更改内存,但会同步更新到磁碟,且因为该方法是占用主线,导致画面被影响
  • apply:立即更新内存,但会异步
fun saveEmail(email: String){
sharedPreference.edit().putString("信箱",email).apply()
    }

取出资料的方式为

fun getEmail(): String?{
return sharedPreference.getString("信箱","")
    }

接下来就可以叫出来啦

存入

val sharedPreferences = SharedPreference(requireActivity())
sharedPreferences.saveEmail(viewModel.list[1])
sharedPreferences.savePassword(passWord)

叫出

val sharedPreference = SharedPreference(requireActivity())
val email = sharedPreference.getEmail()
val password = sharedPreference.getPass()

这样就大功告成啦! 期待明天~


<<:  Day 24:605. Can Place Flowers

>>:  Day26-D3 基础图表:多线折线图

Week35 - 轻松加解密repositories或slack上的档案

大家好,由於在repositories或slack上常常有些档案需要加解密,所以我制作了以下专案~ ...

[Day23] 信箱验证API – views

昨天我们介绍了如何发送验证信,今天我们要来写信箱验证API的逻辑啦~~ 以下是我的程序码 程序码 @...

(World N0-1)! To Pass LookML-Developer Exam Guide

50% Discount On Google Updated LookML-Developer Ex...

Day4. 其实一切东西都在那,只是少了渲染 - Render

昨天谈到了我们的弹珠台,开了那麽多需求,大家有猜到今天要从哪个需求开始看起吗? 没错!哪个需求都不是...

看焰火罗~ Vaadin 内嵌 iFrame 不跑版自动缩放 - day25

看焰火罗~ 有时我们看网页内嵌YouTube影片时,真的会气到头顶冒烟,画面被切掉不说,还无法自动...