繁体   English   中英

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

[英]static list in Android Activity and memory leak

我有一个ArrayListActivity有1000多个字符串项。 ArrayList的成员数不变,并且没有元素更新发生。 application生命周期中,可以多次创建和销毁该活动,但也可能是几次。 同样, ArrayList将用于构造ListView 现在,我有两种关于ArrayList

  1. 将其变量设置为static以避免每次在Activity onCreate()中创建对象并初始化ArrayList
  2. Activity onCreate()中创建和初始化ArrayList以避免内存泄漏

我不知道哪种方法更好,或者还有其他方法吗?

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

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

使用Singleton类初始化/访问的ArrayList

不幸的是,我无法诚实地告诉您,是否有更好的方法来解决您的问题,因为您没有解释上述Arraylist的用途。 尝试向我们解释有关Arraylist的更多信息,我们将看到。 如果我考虑您描述的两种方式,请注意以下几点:

  1. 我不确定这是什么意思,但是如果我看到像字符串和静态之类的单词以避免我不确定它是否有帮助,因为这种优化是由Java自己完成的
  2. 重新创建胖对象可能会给您带来麻烦。

最后,我建议您将Arraylist移到Activity之外,这样就只能创建一个。 如果每个活动中的字符串都不相同,那么您仍然可以根据需要在整个应用程序中创建尽可能多的集合突变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM