gpt4 book ai didi

android - 实现 ListAdapter 和可能的内存泄漏

转载 作者:行者123 更新时间:2023-11-29 02:14:31 27 4
gpt4 key购买 nike

我有一个非常简单的 Activity :

public class A extends ListActivity implements ListAdapter
{
@Override public void onCreate(Bundle b)
{
super.onCreate(b);
setListAdapter(this); //no problems without this line
}
// etc... (empty implementation ListAdapter interface functions)
}

当我从其他 Activity 开始这个 Activity 时:

startActivity(new Intent(this, A.class));

和布什“后退”按钮(以破坏此 Activity ),堆增长了大约 13..15 kbytes,即使在 GC 完成后也不会减少。
当我再次开始和完成这项 Activity 时,脑袋越来越大。
为了监控堆大小,我在 Eclipse 中使用 DDMS。

我做错了什么?

最佳答案

我强烈建议您不要在与 Activity 相同的类中实现 ListAdapter。这不是一个好的编程习惯,所有 Android 教程都创建单独的类作为适配器。他们当然不会将适配器和 Activity 合并到一个类中。例如考虑 GridView tutorial作为我的观点的一个例子。

在我看来,问题出在你说 setListAdapter(this) 的地方。 “this”指的是 ListActivity 类 A,它无论如何都不是适配器。为了正确使用 setListAdapter,您应该传递 ArrayAdapter或者创建您自己的 Adapter 类(实现 ListAdapter 并扩展 BaseAdapter)并实例化它。

我认为这可能会解决您的问题,因为您将 View 的适配器设置为 Activity 本身,这似乎是递归的或某种本质上的“无限循环”。

关于android - 实现 ListAdapter 和可能的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com