많은 이미지가 있고 액티비티의 시작 부분에 센서 리스너를 사용하여 센서 이벤트를 감지하고 이미지를 변경하는 센서 리스너를 사용하는 앱을 개발 중입니다. 쉐이크 방향에 따라.센서 리스너로 많은 수의 이미지를 사용할 때 outfmemoryexception
나는 내 응용 프로그램에서 사용하기 위해 onSensorChanged(SensorEvent event)
의 이벤트 값을 읽어
public void onSensorChanged(SensorEvent event){
accX = event.values[0];
accY = event.values[1];
accY = event.values[2];
}
나는 활동의 일시 정지에 센서 리스너의 등록을 취소하고 또한 가비지 컬렉션으로 System.gc를 호출합니다.
모든 것이 단일 활동을 수행 할 때까지 잘 작동합니다.
I는 현재 활동을 완료하는 경우와, 응용 프로그램이 잠시 후 메모리 예외로부터 제공 시작 (다시 AA 센서 수신기를 갖는) 다른 활동을여
가"에서 OutOfMemoryException : 비트 맵 크기 는 VM 예산 초과"
응용 프로그램의 힙 크기는 4MB를 넘지 않습니다.
센서 리스너를 사용하지 않으면 응용 프로그램이 충돌하지 않으므로 센서 이벤트가 생성되고 새로운 활동이로드 될 때 메모리 누수가 발생할 가능성이 있다고 생각됩니다. 활동에 비트 맵이 사용될 때 OutOfMemoryException을 제공합니다.
그래서 겉으로는 두 가지 이유 : 이미지가 제대로 재활용되지
- http://code.google.com/p/android/issues/detail?id=8488
- 응용 프로그램 Android: reading accelerometer without memory allocation? 에 사용 가능한 메모리를 감소시키는 SensorEvent가있을 때마다, 어딘가에 메모리 누수가
또한 주석 51에 설명 된 솔루션을 사용하고 있습니다. http://code.google.com/p/android/issues/detail?id=8488
모든 것을 재활용하지만 여전히 메모리 문제가 발생합니다.
대형 응용 프로그램에서 이미지를 사용하는 가장 좋은 방법은 센서를 사용하는 동안 실제로 메모리 누수가 있는지 확인하고 재활용하는 방법이나 내가 찾아야 할 제안 응용 프로그램, 정말 도움이 될 것입니다.