gpt4 book ai didi

android - 公共(public)静态变量或使用意向类的 putExtra 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:13 25 4
gpt4 key购买 nike

我在这里有一个关于性能的一般性问题,我应该使用哪些,哪些不应该使用。我实际上在我的应用程序中使用了两个 Activity ,我们称之为“theFirst”和“theSecond” Activity 。

在第一个 Activity 中,我有一个公共(public)静态对象,在我的例子中,它是我创建的自定义对象列表,称为 Conjunction。

当我调用 theSecond Activity 时,我想获取此列表的内容。那么我应该使用公共(public)静态变量吗?有什么问题吗? TheFirst Activity 只有一个实例,对吗?所以使用公共(public)静态变量没问题..?我猜。

或者我应该计算整个列表并将信息放在一个大字符串上,然后使用 putExtra 方法将其发送到第二个 Activity ?

如果对此有一个很好的解释,我将非常感激 :)

最佳答案

不推荐使用静态变量。静态变量存储在堆的 PermGen 部分。即使该类完成它仍然可以工作,静态变量仍保留在堆中。垃圾收集器进行标记和清除。如果在第二个 Activity 中引用的第一个 Activity 中有静态变量,则链接会保持很长。如果您使用更多静态变量,您可能会遇到内存泄漏。也减少使用不必要的元素。

静态变量由 Class 对象引用,而 Class 对象又由 ClassLoader 引用 - 因此除非 ClassLoader 以某种方式删除 Class 或者 ClassLoader 本身有资格进行垃圾回收,否则静态变量不会被垃圾回收。因此,如果您使用在许多类中引用的静态变量,那么这些类和声明静态变量的类不能被垃圾回收,除非这些类可用于垃圾回收。所以这会导致堆内存膨胀导致内存泄漏。

我建议对基元类型使用 puExtra。在您的情况下,使用单例应该会有所帮助。

在这段视频中,这个人讨论了为什么不应使用静态变量以及如何避免内存泄漏。 http://www.youtube.com/watch?v=_CruQY55HOk .这家伙谈论使用 MAT 分析器检查内存泄漏。

另请查看此链接。 http://developer.android.com/guide/faq/framework.html 。查看标题 *How do I pass between Activities/Services within a single application? 下的详细信息。

关于android - 公共(public)静态变量或使用意向类的 putExtra 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15322508/

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