在 Android Studio 中丢失对静态数据的引用

2024-04-10

当我的应用程序进入后台时,我遇到静态数据实例丢失的问题,从而导致空指针异常错误。

静态数据非常依赖于上下文或“状态”,并且通常不能在初始化时生成。

为了确保我保留这些数据,我是否会被迫将数据写入存储,或者是否有其他方法来确保我的静态数据在应用程序放入后台时不会丢失?


静态字段是类的一部分,而不是对象。当 Android 回收内存时,静态字段也会被回收,并且您将丢失其中保存的所有数据。请记住,操作系统可以随时为处于后台的应用程序回收内存。

如果您希望保留状态,则需要将其持久保存到磁盘,在 Android 上,依赖于后台保存在内存中的任何内容是一种危险的策略。

我会为此使用共享首选项,但如果您愿意,也可以使用序列化文件流。共享偏好更加容易并且有详细记录。

在 onResume() 方法中,您将读回这些值,并且当然会将它们保留在 onPause() 中。这还允许您处理诸如接到电话或用户切换到不同应用程序的情况,即使只是一小会儿。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android Studio 中丢失对静态数据的引用 的相关文章

随机推荐

  • Xcode 5 中的代码签名

    我在 Xcode 5 中验证我的应用程序时遇到问题 我在 2 周前提交了更新 Xcode 4 正常 我没有触及任何证书或配置文件 当我尝试验证时 我得到 当我尝试下载身份时 Xcode 崩溃了 我进入偏爱 gt accounts并刷新了我的
  • 如何删除iOS应用程序中呼叫某人时的弹出窗口? [复制]

    这个问题在这里已经有答案了 我想建议用户从应用程序拨打电话 并弹出一个带有特定文本的窗口 我首先向他展示弹出窗口 如果他同意 然后我运行代码从应用程序拨打电话 但与使用无关tel telprompt tel 对于链接 我总是从系统中弹出第二
  • 使用 Flask wtforms 验证器而不使用表单

    我正在从 iOS 应用程序接收用户注册数据 我想使用 wtforms 附带的验证器来确保电子邮件和密码可接受 但是 我没有使用 Flask 表单 因为用户是从 iOS 文本字段输入数据 是否可以使用 wtforms 验证器检查传入的 JSO
  • 如果 Aurelia 理解“导入”,为什么还要使用依赖注入?

    我不明白 如果我可以使用import在 Aurelia 中 为什么我必须将构造函数与 autoinject 还有这一切 我确信我错过了一些东西 但是 据我所知 我可以随时使用导入的模块 import something from whate
  • 是否可以拥有不可变的 JPA 实体?

    在我们的 Hibernate 项目中 实体是使用 Java bean 模式进行编码的 我们的代码中有很多地方有人忘记设置变异器 并且由于以下原因我们得到了异常NOT NULL约束 是否有人使用构建器来构建他们的实体或使它们不可变 我正在尝试
  • 在 strace 中捕获 vDSO

    我想知道是否有一种方法可以捕获 换句话说观察 vDSO 调用 例如gettimeofday in strace 另外 有没有一种方法可以在不加载的情况下执行二进制文件linux vdso so 1 标志或环境变量 最后 如果我编写一个程序来
  • 使用java查找selenium对象标签

    我以前的代码工作没有问题 并且能够使用 selenium 在网页中找到对象标记 没有任何问题 我正在使用 Chrome 驱动程序来访问该页面 因为我注意到当我使用 IE 时 DOM 内部没有显示任何内容 并且我需要访问对象标记的内容 也就是
  • 运行进程隐藏的Python

    我是 python 新手 正在编写新代码 需要一些帮助 主要文件 import os import time import sys import app import dbg import dbg import me sys path ap
  • Internet Explorer 和剪辑路径

    据我所知 clip path 应该在 IE 中工作 如许多文章和本教程中所示CSS 屏蔽 http www html5rocks com en tutorials masking adobe redirect from locale fr
  • 创建自签名 SSL 证书时出错

    我尝试根据链接中的说明创建自签名证书mosca MQTT 代理的安全密钥和证书 https stackoverflow com questions 39913842 security key and cert for mosca mqtt
  • 将实体框架中的字符串列映射到枚举

    有没有办法将字符串列映射到实体模型中的枚举 我已经在 Hibernate 中完成了此操作 但在 EMF 中无法弄清楚 可能是更好的版本 OrderStateIdentifier 字段用于 JSON 序列化和数据库字段 而OrderState
  • Spring Boot MongoDB 连接问题

    我的 Spring Boot 应用程序正在尝试连接到 MongoDB 数据库 配置添加到 application yml 文件中 直到昨天 该应用程序在本地运行得完全正常 但是今天当我在本地主机上本地运行它时 我收到以下错误 2020 12
  • ngClass 中的多个类

    我正在尝试在 ngClass 中添加多个值 该值过去适用于以前的 alpha 版本 但现在似乎不适用于 angular2 beta i i 它会产生一个错误 异常 类型错误 无法读取未定义的属性 add fa fa star 在 PostV
  • 策略模式和命令模式的区别

    两者有什么区别策略模式 http en wikipedia org wiki Strategy pattern和命令模式 http en wikipedia org wiki Command pattern 我也在寻找一些 Java 的例子
  • 我可以将其序列化为 json 字符串并查看它,而不是使用反射来循环访问类属性吗?它有什么缺点吗?

    假设我有一个像下面这样的课程 class Student public int ID get set public string Name get set 只是还有 10 个属性 我想循环遍历这些属性 我可以通过反射来完成 这会有性能成本
  • 使用 ODataQueryOptions 扩展导航属性

    我正在构建一个 OData v 4 Web 服务 该服务必须公开从另一个第 3 方 Web 源检索的数据 因此该数据与 LINQ 世界中的任何内容都不相同 即 没有 IQueryable 没有 Context 什么都没有 解决方法似乎是手动
  • 在 Win32 上构建适用于 Android (ARMv7) 的 OpenSSL

    如何在 Win32 上构建适用于 Android ARM v7 使用 Android NDK 的 OpenSSL 直到 OpenSSL 的出现wiki http wiki openssl org index php Android和 set
  • 如何在 JMeter 中使用命令行参数

    我正在使用 Jmeter 测试 API 我想从终端参数化项目的路径 然后我想在 JMeter 中使用此参数 我通过命令行发送的参数 jmeter n t your script jmx Jurl abcdef com 我在用户定义变量中使用
  • 使用 itext pdf stamper 在 pdf 中添加多个附件

    我想在一个 pdf 文件中添加多个附件 当我进入循环时 它只附加最后一个附件 示例代码 PdfReader reader new PdfReader FILE PdfStamper stamper new PdfStamper reader
  • 在 Android Studio 中丢失对静态数据的引用

    当我的应用程序进入后台时 我遇到静态数据实例丢失的问题 从而导致空指针异常错误 静态数据非常依赖于上下文或 状态 并且通常不能在初始化时生成 为了确保我保留这些数据 我是否会被迫将数据写入存储 或者是否有其他方法来确保我的静态数据在应用程序