内存异常是否会导致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 
    . 
    . 
    . 
} 

谢谢ü所有

+0

你应该添加一些东西来检查'b'是否为'null'。它看起来好像你的'getExtras()'调用正在返回'null'。对于新对象的内存分配不可能默默地失败并返回null。 – 2014-09-21 08:41:23

是的,大多数的NPE都涉及到memeory的问题。你的例外的原因是,android系统在需要内存时会破坏后台活动。为防止由于这个原因造成的异常,您应该使用onSaveInstanceStaterestoreInstanceState方法,这有助于我们在android系统销毁活动时存储数据。看起来你的包在娱乐活动后变为空。

你可以通过检查开发人员选项/不要在你的Android设备上保持活动来模拟你的异常。