内存异常是否会导致NullPointerException?
问题描述:
我的android应用程序有点复杂,它有34个活动,有时5个留在背景上,有很多位图。内存异常是否会导致NullPointerException?
在像galaxy s3这样的新设备上,我永远不会收到错误。但在低内存的旧设备上,我得到了很多NullPointerException,甚至没有发生一次OutOfMemoryException。
所以我的问题是:这些NullPointerExceptions可能是由OutOfMemoryException?
这是一个例外:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nasseralsalmi.wheel/com.nasseralsalmi.wheel.ModelsActivity}: java.lang.NullPointerException : at com.nasseralsalmi.wheel.ModelsActivity.onCreate(ModelsActivity.java:118)
Caused by: java.lang.NullPointerException at com.nasseralsalmi.wheel.ModelsActivity.onCreate(ModelsActivity.java:118)
这是ModelsActivity.java的一部分:
public void onCreate(Bundle savedInstanceState)
{
.
.
.
Bundle b = this.getIntent().getExtras(); // line 117
car = b.getParcelable("car"); // line 118
.
.
.
}
谢谢ü所有
答
是的,大多数的NPE都涉及到memeory的问题。你的例外的原因是,android系统在需要内存时会破坏后台活动。为防止由于这个原因造成的异常,您应该使用onSaveInstanceState
和restoreInstanceState
方法,这有助于我们在android系统销毁活动时存储数据。看起来你的包在娱乐活动后变为空。
你可以通过检查开发人员选项/不要在你的Android设备上保持活动来模拟你的异常。
你应该添加一些东西来检查'b'是否为'null'。它看起来好像你的'getExtras()'调用正在返回'null'。对于新对象的内存分配不可能默默地失败并返回null。 – 2014-09-21 08:41:23