我的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
.
.
.
}
谢谢大家
答案 0 :(得分:1)
是的,大多数NPE都与记忆问题有关。你的例外的原因是,如果需要内存,android系统会破坏后台活动。为了防止由于这个原因导致的异常,您应该使用onSaveInstanceState
和restoreInstanceState
方法来帮助我们在android系统销毁活动时存储数据。在重新创建活动之后,您的捆绑包似乎变为空。
您可以通过检查开发者选项/不在Android设备上保存活动来模拟您的异常。