我的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系统会破坏后台活动。为了避免由于这个原因而导致的异常,您应该使用onSaveInstanceState
和restoreInstanceState
方法,当android系统破坏活动时,这些方法可以帮助我们存储数据。重新开始活动后,您的捆绑商品似乎无效。
您可以通过检查开发者选项/不要在Android设备上保留活动来模拟异常。