有一段时间我错误地认为静态[实例]变量在应用程序运行期间一直存在。然而,令我沮丧和震惊的是,我感觉这不是真的。
仅为测试目的,我创建了一个字符串静态列表,在我的主要
我曾经在某些地方[甚至在SO上]读到过实例变量存在于应用程序存在的时间内,但我担心这并不是真的。
更准确地说,我在使用Facebook SDK for Android时意识到了这个问题。我看到
有人以前观察到过这种情况吗?我是否在理解Android工作原理方面犯了一些基本错误?
怎么回事?
谢谢阅读!
[更新] 我被
然而,我的问题仍然存在。 @MisterSquonk - 不,我没有混淆我的
仅为测试目的,我创建了一个字符串静态列表,在我的主要
activity
类中覆盖了onDestroy
方法以打印一条消息来验证应用程序是否退出。在onCreate
方法中,我只是添加了一个新的string
并打印了列表的内容。我发现列表的大小不断增加,并且之前添加的所有字符串值仍然存在。我曾经在某些地方[甚至在SO上]读到过实例变量存在于应用程序存在的时间内,但我担心这并不是真的。
更准确地说,我在使用Facebook SDK for Android时意识到了这个问题。我看到
SessionEvents
类中的监听器列表中的AuthListener
实例随着时间的推移不断增加。因此,每当启动应用程序并使用FB登录时,监听器方法会被触发与SessionEvents
类中存在的实例数量相同的次数。有人以前观察到过这种情况吗?我是否在理解Android工作原理方面犯了一些基本错误?
怎么回事?
谢谢阅读!
[更新] 我被
BalusC
和rdineiu
纠正了。我真的不想在这里创建关于实例和类变量的混乱。遗憾的是,在匆忙发布问题时,我犯了一个我不希望犯的错误。我非常清楚静态和实例变量之间的区别。我只是打算写class
变量,并且无法弄清楚为什么要将静态变量称为instance
变量。然而,我的问题仍然存在。 @MisterSquonk - 不,我没有混淆我的
Activity
何时结束以及应用程序何时被销毁。这是我在样本上尝试的内容-我只有一个作为Main
的Activity
。当我从这个Activity
按返回按钮时,我假设Activity
从堆栈中删除并且应用程序也被销毁。我启动了任务管理器来验证我的应用程序不再运行。