2014-09-21 2 views
1

내 안드로이드 앱은 약간 복잡하고 34 개의 활동을 가지고 있습니다. 때로는 5 개의 비트 맵이 배경에 머물러 있습니다.메모리 예외로 인해 NullPointerException이 발생할 수 있습니까?

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

'b'가 'null'인지 확인하기 위해 뭔가를 추가해야합니다. 'getExtras()'호출이'null'을 리턴하고있는 것처럼 보입니다. 새로운 객체에 대한 메모리 할당이 자동으로 실패하고'null'을 리턴하는 것은 불가능합니다. –

답변

1
예, NPEs의 대부분이 memeory 관련된

문제. 예외가있는 이유는 안드로이드 시스템이 메모리가 필요할 경우 백그라운드 활동을 파괴하기 때문입니다. 이러한 이유로 인해 예외가 발생하지 않도록하려면 onSaveInstanceStaterestoreInstanceState 메서드를 사용해야합니다. 그러면 안드로이드 시스템이 활동을 파괴 할 때 데이터를 저장하는 데 도움이됩니다. 액티비티를 재 작성한 후에 번들이 null로 표시되는 것 같습니다.

개발자 옵션/Android 기기에서 활동을 유지하지 않음을 선택하여 예외를 시뮬레이트 할 수 있습니다.

관련 문제