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

在像galaxy s3这样的新设备上,我永远不会出错。但是在内存不足的旧设备上,我收到了很多NullPointerExceptions,甚至没有一个OutOfMemoryException。

所以我的问题是:那些NullPointerException是否由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与内存问题有关。出现异常的原因是,如果需要内存,android系统会破坏后台活动。为了避免由于这个原因而导致的异常,您应该使用onSaveInstanceStaterestoreInstanceState方法,当android系统破坏活动时,这些方法可以帮助我们存储数据。重新开始活动后,您的捆绑商品似乎无效。

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

10-08 15:26