2012-04-16 2 views
0

탭 호스트의 일부 옵션 체크 박스 및 버튼에 대한 작업이 있고 탭 활동에서 처음으로 내 응용 프로그램 메모리로 전환 될 때마다 사용량이 ~ 7MB만큼 증가합니다.탭 호스트의 내 Android Scrollview가 너무 많은 메모리를 소비 함

이것은 16MB의 힙 한계를 넘깁니다.

사용자가 옵션 탭에서 다른 탭으로 전환 할 때마다이 엄청난 메모리 사용을 줄이고 완전히 제거하는 방법이 있습니까?

+0

안드로이드는 당신의 기억을 돌보고 "극히 낮은 메모리 상황에서"일시 중지 된 "활동"을 파괴합니다. 명백하게 이것은 피해야합니다. 탭 내용으로'Activities' 대신'Views'를 사용하는 것이 좋습니다. 그러나 이것은 ~ 7MB 메모리를 없애기 위해 도움이되지 않습니다. _some_ 버튼과 체크 박스가 포함 된 활동은 확실히 ~ 7MB의 메모리를 차지할 수 없습니다. 활동에 큰 비트 맵 (배경, 이미지 버튼 등) 또는 다른 자원을 사용합니까? – 207

+0

안녕하세요, 작은 비트 맵 1 개, 체크 박스 13 개, 버튼 6 개, 텍스트 뷰 4 개를 사용하고 있습니다. 그것은 다소 크고 안드로이드가 전체보기에서 1 개의 큰 비트 맵을 만들어서 스크롤하는 것은 너무 많은 공간을 차지하고 있다고 생각합니다. 그리고 나는 그 거대한 메모리 덩어리를 처리하기 위해 안드로이드에 의지하고 싶지는 않지만, 내가 생각할 때, 나 자신이 할 시간이 맞을 때 정말로 그것을하고 싶습니다. – HardCoder

+0

예. 그러한 상황에서 시스템을 "강요"해서는 안됩니다. 또한 메모리가 클수록 GarbageCollector와 앱의 필요성은 느려집니다. 그로 인해 나는 기억 (활동)을 자유롭게 할 방법을 찾지 않을 것이다. 나는 당신의 활동이 많은 기억을 차지하는 이유를 찾을 것이다. 비트 맵을 제거하고 이것이 힙 사용에 어떤 영향을 주는지 볼 수 있습니다. – 207

답변

2

당신의 TabActivity 내에서 this처럼 텐트를 만들어보십시오 :

Intent myIntent = new Intent(this, MyAwesomeTabView.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

이것은 사용자가 탭을 클릭 할 때마다, 클릭 한 탭은 힙에있는 유일한 활동 될 수 있도록 할 것이다 (다른 것 파괴 될 것이다).

+0

그게 정확히 내가 찾고 있던 것. 고맙습니다. – HardCoder

관련 문제