2013-08-31 2 views
0

나는 안드로이드 응용 프로그램을 사용하여 설치를 위해 http://developer.android.com/training/animation/screen-slide.html을 추적했습니다.조각 파기

그러나 ViewPager에는 (단시간에) 꽤 많은 단편이 있으며, 내가 그 (것)들에 없을 때 그들을 파괴하고 싶습니다. ViewPager의 getItem (int position)이 호출 될 때마다 생성되는 하나의 프래그먼트가 있습니다. 이는 약 365 회 (각 요일에 하나씩)입니다. ImageView를 페이지의 끝에 추가하기 전까지 (이미지의 끝 부분에있는 총 12 개) ... 이제는 페이지 3의 뷰를 보려고하면 메모리가 부족합니다.

제 질문은, 현재 페이지가 아니라면 어떻게 조각을 제거/파기합니까? FragmentManager의 BackStack을 터뜨리려고했지만 작동하지 않았습니다. BackStack에서 아무 것도 보이지 않지만 다시 - getItem() 함수가 잘못된 위치에서 호출했을 수 있습니다.

코드를 제공 하겠지만 중요한 부분을 살펴 보는 것은 꽤 많이 있습니다. 위 링크의 튜토리얼과 완전히 같은 구조입니다.

감사

+0

으로 이동하십시오. http://stackoverflow.com/questions/7119203/how-to-destroy-fragment –

답변

0

당신이 호출기 imageViews를 추가 한 후 메모리 문제를 얻는 경우에, 당신은 왜 이미지 뷰에 대한 구성 비트 맵의 ​​메모리 측면에 초점을 두지는 앱에 추가? 장치 카메라에서 사진이 매우 클 수 있으며, IMO 당신이에 먼저 집중해야한다, 매우 빠르게 메모리 문제가 발생할 수 있다는

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

참고.

IMO, 표준 ViewPager 및 표준 어댑터는 페이저를 순환하는 많은 조각이 있어도 메모리 관리에서 정상입니다.

little complex 그리고 페이지 번호를 명시 적으로 없애고 페이저와 어댑터 간의 협업에 대한 자세한 내용으로 인해 ViewPager에서 조각을 다시로드하는 문제가 있습니다.

당신은 어댑터와 호출기 자신의 복잡성에 걸릴하려는 경우, 호출기에 source code에 들어가 어댑터에 대해 당신이 선택해야합니다 : 당신이 많은에서 볼 수 있듯이

* {@link android.support.v4.app.FragmentStatePagerAdapter}, 
* {@link android.support.v13.app.FragmentStatePagerAdapter}; 

ViewPager에서 조각을 관리하는 주제에 대한 글을 게시합니다. 단순히 어댑터에서 'destroyItem()'을 호출하거나 어댑터에서 notifyDataSetChanged()를 호출하기 전에 어댑터에 바인딩 된 ListArray에서 단편을 단순히 제거하는 것만으로는 충분하지 않습니다. 또한 원하는 결과를 얻으려면 ViewPager와 함께 getItemPosition의 작동 방식을 정확히 알아야합니다.

ViewPager 방식으로 작업하는 데 많은 시간이 걸릴 것입니다.

먼저 비트 맵에 집중하여 해결하십시오.