android - new Handler().postDelayed(new Runnable() 内存泄漏
问题描述
关于堆问题和内存泄漏,
我阅读了以下文章,强调为处理程序部分创建静态类:
here
现在下面的代码是否容易发生堆内存泄漏?
///////////////////Handler 1
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (x == 1) {
///////////////////Handler 2
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(y == 1) {
///////////////////Handler 3
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//Do work A
}
}, 1000);
}
else
{
// do work B
}
}
}, 1000);
}
else
{
// do work B
}
}
}, 1000);
解决方案
我进行了验证测试,结果是上面的代码没有检测到内存泄漏LeakCanary
(为了确保LeakCanary
工作正常,我使用了另一个泄漏的Handle
问题示例,并且检测到了泄漏Handle
)
我无法描述确切的区别是什么
推荐阅读
- javascript - __doPostBack 未在 chrome 浏览器中触发。在 IE 中工作
- android - 菜单未显示在片段中
- android - 如何操作后退按钮?
- javascript - 如何知道 Web Worker 何时加载失败?
- angular - Angular 6、节点、护照和 OAuth2
- mysql - 案例在 Phalcon 模型管理器中的使用没有给出正确的值
- java - 使用 vert.x 处理异步操作
- php - 一次提交插入多个表
- sql - 在 APEX 5 ORACLE SQL 中使用动态魔法枢轴出现错误“此处只允许简单的列名”
- razor - 在 .net 核心上发布后对象丢失