Android NullPointerException - 字段何时被垃圾回收?
Android NullPointerException - when do fields get garbage collected?
我在 Android activity:
中有类似的东西
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPreferencesViewModel = new MainActivityPreferencesViewModel();
mButton.setOnClickListener({
mPreferencesViewModel.getSomething()
})
}
伴随着 NullPointerException
崩溃 在 getSomething()
行的罕见报道。所以基本上,mPreferencesViewModel
是空的。
澄清一下:activity 中没有一段代码将字段重置为 null。
为什么会发生这样的事情?如果 activity 被销毁(因为应该再次调用 onCreate
),是否会重新创建该字段?
什么情况下会出现这种情况?我正在尝试重现,但没有成功。
该字段什么时候会变为空?在 onStop()
?
之后
好吧,问题是我在某些情况下从 Activity 的 onNewIntent()
调用按钮的点击侦听器,这显然是在 onCreate()
之前调用的。
我在 Android activity:
中有类似的东西@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPreferencesViewModel = new MainActivityPreferencesViewModel();
mButton.setOnClickListener({
mPreferencesViewModel.getSomething()
})
}
伴随着 NullPointerException
崩溃 在 getSomething()
行的罕见报道。所以基本上,mPreferencesViewModel
是空的。
澄清一下:activity 中没有一段代码将字段重置为 null。
为什么会发生这样的事情?如果 activity 被销毁(因为应该再次调用 onCreate
),是否会重新创建该字段?
什么情况下会出现这种情况?我正在尝试重现,但没有成功。
该字段什么时候会变为空?在 onStop()
?
好吧,问题是我在某些情况下从 Activity 的 onNewIntent()
调用按钮的点击侦听器,这显然是在 onCreate()
之前调用的。