V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
QBugHunter
V2EX  ›  Android

SharedPreferences 储存 10-15 个 int,可以放在 Ondestory()里吗?

  •  
  •   QBugHunter · 2020-11-30 20:15:17 +08:00 · 8577 次点击
    这是一个创建于 1452 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 现在有 10-15 个 int 用于表示一些状态,需要 APP 每次启动时读取这些状态(上次关闭时)。这些 int 通过 SharedPreferences 类来储存,在某个 Activity 的 OnDestory()里储存,这样用户关闭 APP 时后能保证 APP 储存最后一次的状态

    然后我看一些资料(第一行代码),上面说 OnDestory()函数里不能执行耗时过多的操作,我向问下,以小米 9 为例,在 OnDestory()函数里用 SharedPreferences 储存 10-15 个 int,这个操作是否属于比较耗时的操作?

    9 条回复    2020-12-03 10:03:32 +08:00
    gam2046
        1
    gam2046  
       2020-11-30 20:52:58 +08:00
    建议在 onPause 里调用。通常来说 onDestory 是没问题的,但架不住用户强杀,那就没这个回调了。

    通常情况下,即使用户强杀应用,不是命令行或者其他拥有 root 权限的应用,至少会先切出应用,那至少会回调 onPause,应该认为是可靠的。
    janus77
        2
    janus77  
       2020-12-01 09:58:17 +08:00
    你把他们拼起来变成一个大 int 相当于只存一个值就行了
    starerlloll
        3
    starerlloll  
       2020-12-01 10:15:49 +08:00
    要及时更新,这种状态的值没必要留到最后一起更新。。你什么时候改变的状态就什么时候存。如果你觉得说太频繁了的话,搞个本地的数据库做
    chenjiajia9411
        4
    chenjiajia9411  
       2020-12-01 12:28:41 +08:00
    建议直接改用 MMKV……
    luyao1993
        5
    luyao1993  
       2020-12-02 09:50:54 +08:00
    在 onDestroy() 或者 onStop() 这种调用时机本身就不确定的回调中做数据处理操作,本身就可能导致意料之外的问题。不是很频繁的修改的话,完全可以每次修改就存储。
    QBugHunter
        6
    QBugHunter  
    OP
       2020-12-02 09:54:04 +08:00
    @luyao1993
    EventBus 的 unregister()函数不就是写在 OnDestory()函数里的吗?
    stardust21
        7
    stardust21  
       2020-12-02 11:30:06 +08:00
    用 apply 是异步执行的,或者换 mmkv 之类其他的方案
    xierbenq
        8
    xierbenq  
       2020-12-02 16:10:11 +08:00
    apply/commit,你自己测下耗时不就知道了
    Nuttertoo1s
        9
    Nuttertoo1s  
       2020-12-03 10:03:32 +08:00
    保存状态最好用 onSaveInstanceState,onDestory()这个生命周期在某些情况下是不会执行的。在 onDestory()方法里进行状态保存很有可能会造成数据丢失
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:46 · PVG 11:46 · LAX 19:46 · JFK 22:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.