我的 android 应用程序有点复杂,它有 34 个 Activity ,有时其中 5 个留在后台,上面有很多位图。
在像 galaxy s3 这样的新设备上,我从来没有遇到过错误。但是在内存不足的旧设备上,我得到了很多 NullPointerExceptions,甚至没有一个 OutOfMemoryException。
所以我的问题是:这些 NullPointerExceptions 可能是由 OutOfMemoryException 引起的吗???
这是异常(exception)之一:
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 都与内存问题有关。您异常(exception)的原因是,android 系统在需要内存时会破坏后台 Activity 。为了防止因为这个原因导致的异常,你应该使用onSaveInstanceState
和restoreInstanceState
方法来帮助我们在android系统销毁 Activity 时存储数据。在重新创建 Activity 后,您的 bundle 似乎变为空。
您可以通过选中开发者选项/不要在您的 Android 设备上保留 Activity 来模拟您的异常。
关于android - 内存异常会导致 NullPointerException 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25957322/