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

Android 开发中大家都是如何保存一些全局常用的参数或 信息?

  •  
  •   royliu · 2016-11-22 10:41:51 +08:00 · 8779 次点击
    这是一个创建于 2927 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 App 登录后一些后台返回的用户信息,需要全局共享使用的,是建一个类使用 public static 存放呢,还是在继承 Application 封装成对象通过 get , set 存取?一直对 Android 的 static 使用有点模糊,求指教,谢谢!
    yescpu
        1
    yescpu  
       2016-11-22 10:53:28 +08:00
    Android 内存数据放哪儿多有可能被回收,所以正常流程是先保存硬盘、 load 到内存,用的时候先先 check 内存有没有,没有还得再 load 到内存
    enenaaa
        2
    enenaaa  
       2016-11-22 11:47:12 +08:00
    如果数据少, 那哪个地方用到就存哪里。
    如果数据较多, 就建一个类集中存放, 顺便还能加本地存储功能。
    xingda920813
        3
    xingda920813  
       2016-11-22 15:38:57 +08:00
    这两种方法是一样的。单进程情况下, Application 只有一个对象, static 也只有一份。多进程情况下,每个 JVM 都有一个 Application 被创建,不同 JVM 中加载的类在内存空间上彼此独立,即使是 static 也是有多份的(因为在不同的虚拟机)。

    如果只需要内存缓存的话, static 是可以的,用起来还简单一些。目前 Android 使用的 JVM 并没有类卸载 (class-unloading) 机制,类一旦被加载进来,只要进程不死,是不会卸载掉的。从这点上看, Application 的生命周期和 static 是一样的。

    对于后台返回的用户信息,应该是要做持久化的。否则 App 杀掉后,登录信息会丢失。可以用 JSON 化后放入 SP 等方法。
    Chrisplus
        4
    Chrisplus  
       2016-11-22 16:27:48 +08:00
    放在 application 里面,跟 applicatuion 同生命周期。

    多周期跨周期的读写考虑持久化,比较轻量的数据直接读写 sharedpreference 得了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5429 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 08:26 · PVG 16:26 · LAX 00:26 · JFK 03:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.