Android中的静态列表活动和内存泄漏

时间:2017-12-08 09:21:28

标签: java android arraylist memory-leaks

我在ArrayList中有一个Activity个字符串项超过1000个。 ArrayList的成员数不会更改,也不会发生元素更新。该活动可以在application生命期内多次创建和销毁,但也可能是几次。此外,ArrayList将用于构建ListView。现在我在约ArrayList中有两种方法:

  1. 将其变量设置为静态,以避免每次ArrayList onCreate()
  2. 创建对象并初始化Activity
  3. ArrayList onCreate()中创建并初始化Activity以避免内存泄漏
  4. 我不知道哪种方式更好或有其他方式吗?

3 个答案:

答案 0 :(得分:0)

如果您不需要一次显示所有1000个元素,您可以尝试使用SQLite数据库和Cursor,它将部分加载您当前需要的字符串。

答案 1 :(得分:0)

您可以使用singleton方法来避免内存泄漏。下面的链接可以帮助您制作singleton对象。

ArrayList initialized/accessed using Singleton class

答案 2 :(得分:0)

不幸的是,我不能诚实地告诉你,如果有更好的方法来解决你的问题,因为你没有解释所提到的Arraylist的用途。试着向我们解释更多关于Arraylist的信息,我们会看到。如果我应该考虑你描述的两种方式,我有这样的说明:

  1. 我不知道你在这一点上是什么意思但是如果我看到像string和static这样的词来避免我不确定它是否有帮助,因为这种优化是由java自己完成的
  2. 重新创建胖对象会给你带来麻烦。
  3. 最后,我建议你将Arraylist移到Activity之外,这样它就只会创建一个。如果每个活动中的字符串不同,您仍然可以在整个应用程序中创建所需的集合变异。