내 활동에 listview가 있고 다른 모든 것들은 제외하고 웹에서 이미지를로드하고 listview에 표시합니다. 2 가지 HTC 욕구, LG P-350, 1 대 이상의 전화 및 태블릿, 5 가지 안드로이드 장치에 대한 액세스 권한이 있습니다. 일반적으로, 모든 것이 잘 작동하지만 HTC의 욕망 중 하나에서 시작되는 응용 프로그램은 (난 그렇게 생각) 메모리 부족 오류로 인해 NullPointerException이와 충돌하는 경향이 출력입니다 : 나중에메모리 부족 오류 : 방대한 비트 맵
05-03 14:41:23.818: E/dalvikvm(843): Out of memory: Heap Size=7367KB, Allocated=4991KB, Bitmap Size=16979KB
, logcat은 내 정적 변수 중 하나가 갑자기 null이되는 nullpointerexception의 스택 추적을 출력합니다. 변수는 앱의 루트 활동에서 초기화되고 앱에서 사용되고 코드에서 제외되지 않습니다. 메모리 부족으로 인해 시스템에 의해 무효화됩니다. 필자가 바라지 않는 한, 시스템은 17MB 크기의 비트 맵을 할당하려고 시도합니다.로드 된 이미지는 그리 크지 않을 것입니다. 그들은 100 * 70 jpeg이며, 그 중 어떤 것도 1MB보다 훨씬 적습니다. 내가 이해하지 못하는 또 다른 한 가지는 왜 한 장치에서만이 오류가 발생하는지입니다. 다른 장치는 정상적으로 작동합니다.
내 마음에, 이것은 매우 이상하게 보입니다. 단서를 찾을 수 없으므로 조언이 필요합니다.
1 이미지 크기가 1MB 미만이므로 모든 이미지 크기를 추가하면 OutOfMemoryError를 제공 할만큼 충분히 커집니다. – Dharmendra
Btw : 변수가 null 인 시스템이 없습니다. 당신의 코드가'null'을 넣었거나 변수가 아직 초기화되지 않았습니다. 그 일이 일어날 수있는 유일한 변수는 명시 적으로 만들어지는 것 : 약한/부드러운 참조. – zapl
내 목록보기는 항목 클릭이 새로운 활동을 시작하는 방식으로 구성됩니다 (활동 B로 함). 나는 listview의 onItemClick에서 중단 점을 설정하고, 디버그 모드에서 app을 실행하고, listview 활동을 입력하고, listview 항목을 누르고, 중단 점에서 중지하고, 정적 변수의 값을 검사합니다. 이는 null이 아닙니다. 그런 다음 B의 onCreate에 중단 점을 배치하고 거기에서 멈추고 동일한 정적 변수의 값을 검사합니다. 이미 null입니다. 마술인가? 나는 listview 항목 클릭 리스너와 B의 oncreate 사이에 내 코드가 없습니다. 변수가이 두 점 사이 어딘가에 있습니다 ... –