内存异常会导致NullPointerException吗?

时间:2014-09-21 08:26:38

标签: android nullpointerexception out-of-memory

我的Android应用程序有点复杂,它有34个活动,有时其中5个留在后台,上面有很多位图。

在像galaxy s3这样的新设备上,我从未收到任何错误。但是在内存不足的旧设备上,我得到了很多NullPointerExceptions,甚至没有一个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
    .
    .
    .
}

谢谢大家

1 个答案:

答案 0 :(得分:1)

是的,大多数NPE都与记忆问题有关。你的例外的原因是,如果需要内存,android系统会破坏后台活动。为了防止由于这个原因导致的异常,您应该使用onSaveInstanceStaterestoreInstanceState方法来帮助我们在android系统销毁活动时存储数据。在重新创建活动之后,您的捆绑包似乎变为空。

您可以通过检查开发者选项/不在Android设备上保存活动来模拟您的异常。