2016-03-23 36 views
2

我有一个Activity,其中我初始化一个类成员变量onCreate()。在某些情况下,我需要startActivity()这意味着这个Activity变成停止状态。当我回来时,我需要使用这个变量。当Activity停止时,Android是否清理Activity的成员变量

这在大多数手机中都能正常工作,但我的用户也遇到了一些问题,因为会员在手机上变为null。该成员只包含一些StringPOJO

Android是否清理Activity的成员变量以释放内存?

+0

onCreate()是否是本地成员? –

+0

他形容它是一个“成员变量”,意思是不是本地的 - 假设描述是准确的。你是否搜索过变量的用法,以确保你没有像'onStop'那样将其设置在其他地方? – nasch

+0

对不起,我的描述。该成员属于该活动,不属于本地。我确定在初始化后我没有设置变量。 –

回答

1

即使未完成活动,如果调用onDestroy,那些成员变量将被清除。您可以在开发人员设置中打开“不要让活动保持活动状态”来模拟此操作。一旦启用,再次开始新的活动,然后暂停(即击中home键)

要解决这个问题,你需要将这些成员变量存储的onSaveInstanceState,然后使用savedState摞的onCreate

恢复它们
+0

但我的活动没有onDestroy调用,它只是被onStop调用。当onStop调用某个时候,这些成员变量会被清除吗? –

+0

即使您没有调用完成(),也可以调用onDestroy。这可能发生在内存不足或其他问题时。如果你打开不保持活动活动设置,你会明白我的意思。在这种情况下,您会看到onStop和onSaveInstanceState被调用。如果您的活动在暂停时被销毁,则onCreate会再次被调用,并且savedState包不会为空。 – craya

相关问题