Sta*_*wed 2 java android memory-leaks
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
// do stuff
}}, 100);
Run Code Online (Sandbox Code Playgroud)
如果我从一个活动(onCreate或onResume或其他地方)调用它,这会导致内存泄漏吗?我已经读过它new Runnable()
应该是一个静态实例,是真的吗?
是.此代码可能会导致内存泄漏.
只要基于此匿名类Runnable
在队列中(在此示例中为100毫秒),它就会保留对外部Activity
类的引用.
当然,这样的内存泄漏本身并不是问题,但是根据内部run
执行的代码,它可能会产生更大的问题,例如当您尝试在Activity
被杀死后显示对话框时崩溃应用程序.在这种情况下,您将看到很好的信息异常:
IllegalArgumentException:无法在onSaveInstanceState之后执行此操作
要么
BadTokenException:无法添加窗口 - ...您的活动是否正在运行?