持有 Singleton 引用的活动会泄漏内存吗?

2024-03-17

如果我有这样的代码:

public class MyActivity extends Activity 
{

private SingletonClass singletonInstance;

...

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    singletonInstance = SingletonClass.getInstance();
}

...
}

我的理解是,Activity 将保持活动状态,因为它引用了静态实例,因此无法被 GC 回收。然而,它似乎并没有给我的应用程序带来任何问题。我是否不理解 GC 或者这真的会泄漏内存,我应该避免保留对我的单例类的引用吗?


研究了你的疑问,我确认我的答案:

如果您将 singletonInstance 声明为静态,就会发生这种情况。对于您的 Activity,singletonInstance 只是 SingletonClass 的一个实例。请记住,不存在“静态实例”之类的东西,该实例只是给定类的一个对象,使其成为静态的是您在作用域中声明它的方式。对于 MyActivity,singletonInstance 不是静态的,即使在 SingletonClass 中您引用相同的对象/实例并且它被声明为静态。

这样,您的 Activity 就可以被 GC 清理而不会出现问题。我在 Android 上有一个类似的实现,它涉及一个服务,它已经运行了数百小时,没有任何内存或性能问题......

Regards

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

持有 Singleton 引用的活动会泄漏内存吗? 的相关文章

  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • Android - AudioRecord类不读取数据,audioData和fftArray返回零

    我是 Android 新手 一直在开发音调分析器应用程序 最低 SDK 8 我读了很多关于如何实现 Audiorecord 类的文章 但我想知道为什么它在我录制时不读取任何数据 我尝试显示 audioData 和 fftArray 的值 但
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 在 Samsung Galaxy S5 Android 5.0 上使用 MediaPlayer 加载音频流需要超过 10 秒

    由于更新至 Android 5 0 MediaPlayer 在 Samsung Galaxy S5 上无法正常工作 启动音频流后加载时间超过 10 秒 示例代码 MediaPlayer mPlayer new MediaPlayer Str
  • 卡片视图 单击卡片移至新活动

    我是 Android 编程新手 正在研究卡片布局 我想知道如何使其可点击 android clickable true android foreground android attr selectableItemBackground 我的卡
  • 在命令行上卸载 Android SDK 的选定部分

    这与 卸载旧的 Android SDK 版本 https stackoverflow com questions 15182377 uninstall old android sdk versions 除非我想在无头 Linux CI 服务
  • 如何检查 Android 中的同步设置

    我正在构建一个 Android 应用程序 我需要检查设备中注册的每个单独帐户的同步设置 我知道我可以通过 ContentResolver 类来做到这一点 但我遇到了一些问题 我已设法获取设备上所有帐户的列表 但我不知道在运行时从哪里获取特定
  • Android - 以编程方式选择菜单选项

    有没有办法以编程方式选择菜单选项 基本上 我希望视图中的按钮能够执行与按特定菜单选项相同的操作 我正在考虑尝试调用 onOptionsItemSelected MenuItem item 但我不知道要为菜单项添加什么 是的 有一种方法可以选
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • Android:如何从网络异步获取搜索建议?

    我创建了一个可搜索的活动 现在 我想添加从网络服务获取的搜索建议 我想异步获取这些建议 根据添加自定义建议 http developer android com guide topics search adding custom sugge
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp
  • Git 实验分支还是单独的实验存储库?

    我正在开发一个 Android 应用程序 并且在整个开发周期中一直使用 Git 现在 我想构建并发布实验性功能 供人们尝试和安装 同时仍将原始的 稳定的应用程序安装在他们的设备上 现在 这意味着我需要使用不同的包名称 这会更改开发项目中的一

随机推荐

  • 查询对象时 linq to sql + stackoverflow 异常

    好的 当我尝试查询主键 如果实体中的主键设置为 自动生成值 时 我已经确认只有这个问题 但如果没有这个 我该如何插入 抱歉 如果这是一个 linq2sql 菜鸟 但我刚刚开始使用它 如何在关闭此选项的情况下使用 Linq to Sql 同时
  • PHP 和 MySQL:显示某些内容的总和,按不同类别分类

    你能帮我一下吗 如果您能提供答案和解释 我会更加感激 因为我想了解更多 实际上我已经感谢这个社区了 对我的学习帮助很大 但只有答案对我来说就足够了 因为我真的需要这个代码 好的 现在我将定义问题 现在 假设我有包含这些列的表格 tbl tr
  • Express 应用程序中 helpers 文件夹的意义是什么?

    我正在尝试导出一个适合我们要求的最佳混合文件夹结构 但在查阅了很多文章和信息之后 我有一个用名称定义的文件夹helpers并有文件 js扩展 app controllers userController js models userSche
  • MATLAB:使用 ode45 时是否可以有两个事件值?

    我想要对运动方程的 ode45 计算有两个限制 位置和时间 我已经让时间事件起作用 但我不确定是否以及如何添加另一个事件来限制位置 编辑 我还有许多不同的粒子在一个 ODE 方程中耦合在一起 并且需要它们在到达 屋顶 时单独停止 因为它们都
  • 如何设置系统范围的umask?

    我在一个运行 Linux Debian 和 Ubuntu 的实验室工作 用户名和组名由 NIS 和 yp 处理 我们有一些公共用户 每个人都可以访问来运行实验 然后我们每个人都有自己的用户 此外还有一个我们都是其中成员的公共组 我怎样才能使
  • 如果成功或失败,如何返回 std::copy 的值?

    我在用std copy将对象复制到std deque到一个文件 代码工作正常 但我需要检查复制是否成功 因此我需要设置标志 否则抛出异常 我已经用谷歌搜索但找不到解决方案如何检查是否std copy已成功将值复制到文件中 有人可以照亮它吗
  • Java 放气响应

    大家好 我想为 tomcat 创建一个过滤器来压缩某些 MIME 类型的所有响应 有什么指导方针吗 String ae request getHeader accept encoding if ae null ae indexOf defl
  • 如何在 Node.js 插件中泵送窗口消息?

    在 Windows Nodejs 插件中 我创建了一个窗口来接收消息 Handle
  • 将相同的运算符专门用于不同的特征

    我想通过特征进行专业化来执行以下操作 Array Aa Scalar in a会使用overload I Array Aa Array Bb会使用overload II 在下面的代码中 overload II永远不会习惯 有人提到过T1不能
  • 如何等待蓝鸟承诺在多个地点定居?

    我遇到的情况是 一堆函数需要等待承诺解决 因为它是 init 函数 self init new Promise function resolve do stuff take awhile resolve 但是 当它正在初始化时 异步性质意味
  • Linq - 获取数组最后一个非零数的索引

    是否有一个 Linq 表达式返回数组中最后一个非零值的索引 我对扩展不感兴趣 只对简单的 linq 表达式感兴趣 我正在想象这样的伪代码 int index 0 2 1 LastOrDefaultAt i gt i gt 0 返回值应该是2
  • 如何在 django 中使用 json.dumps 方法加载保存的数据

    模型 py class History models Model user models ForeignKey User on delete models SET NULL blank True study models ForeignKe
  • 使用比较器函数进行排序

    因此 我正在使用一些预先存在的比较器来比较两个元组中的某些值 如果第一个大于第二个则返回 true 否则返回 false 这是其中之一的代码 def cmpValue subInfo1 subInfo2 Returns True if va
  • 显式空检查与空合并运算符的编译器评估?

    考虑下面的代码 它使用了两个slightly不同的检查方法 instance并在尚未设置时分配它 class InstantiationTest private Object instance public void Method1 if
  • 如何在 Android 中设置自定义闹钟铃声

    我需要在我的应用程序中设置自定义闹钟铃声 谁能告诉我如何设置自定义铃声或 Mp3 作为闹钟 任何形式的帮助将不胜感激 这也是这个问题的解决方案 将音频文件设置为铃声 https stackoverflow com questions 460
  • UITextView 动画视图后内容偏移不良

    我有一个 UITextView 位于视图底部 当用户点击它时 我需要将视图动画放大 150 像素 我在用着 void textViewDidBeginEditing UITextView textView and void textView
  • R 中的条件计数和分组依据

    我想计算每个有多少行type如果他们满足条件x 0 有点像 SQL 中的 group by 这是数据的示例 type x search 0 NULL 0 public 0 search 1 home 0 home 1 search 0 我假
  • c atoi() 在 Linux 上用于宽字符?

    Linux 上是否有与宽字符等效的 c atoi 我可以找到 MS wtoi 的东西 但我可以在标准 Linux 库中找到任何东西 您可以使用wcstol http www gnu org s libc manual html node P
  • 如果控制台应用程序需要 root 权限,它如何在 OS X 下对自身进行 sudo? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道命令行应用程序是否可以请求根访问权限 例如尝试使用sudo 我正在寻找一种解决方案 允许编写需要的应用程序sudo如果需要的话 可以享受特权
  • 持有 Singleton 引用的活动会泄漏内存吗?

    如果我有这样的代码 public class MyActivity extends Activity private SingletonClass singletonInstance Override protected void onCr