Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用内部类避免内存泄漏_Android - Fatal编程技术网

Android 使用内部类避免内存泄漏

Android 使用内部类避免内存泄漏,android,Android,这件事难倒我了。我似乎不知道如何正确地在android中创建新的侦听器以避免内存泄漏。我是否会使用一个静态的内部类和一个外部类的软引用(因为我需要访问外部类变量)?或者我应该这样做: setScrollListener(new ScrollListner { //methods here. }); 只有当Scrolllistener从活动外部引用时,才会发生内存泄漏 如果在代码中使用scrolllistener,则侦听器将保留对活动的引用,因为它是匿名类。但对您的侦听器的唯一引用将来自此活

这件事难倒我了。我似乎不知道如何正确地在android中创建新的侦听器以避免内存泄漏。我是否会使用一个静态的内部类和一个外部类的软引用(因为我需要访问外部类变量)?或者我应该这样做:

setScrollListener(new ScrollListner {

//methods here.

});

只有当Scrolllistener从活动外部引用时,才会发生内存泄漏


如果在代码中使用scrolllistener,则侦听器将保留对活动的引用,因为它是匿名类。但对您的侦听器的唯一引用将来自此活动的引用视图。一旦活动完成,垃圾收集器可以立即清理整个内存

为什么内部类内存泄漏?哪个内部类?静态的还是我提供的示例?如果使用得当,在任何情况下都不会出现内存泄漏,您能详细说明吗?你说正确使用是什么意思?我明白你现在说的。我只是在加载大约300个项目的列表时不断出现OOM错误。我不知道怎么了。我使用的是viewholder模式,没有图像。我想这是我的非静态内部类。我对这个问题很感兴趣。也许是项目列表本身,在另一个问题中发布更多代码,也许我们可以帮助你