From 1c6c99d8bd05c2a94e39b49d2f6aea0dac99b344 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 14 Oct 2012 21:53:48 +0400 Subject: lower memory usage --- src/org/fox/ttcomics/ComicFragment.java | 25 ++++++++++++++----------- src/org/fox/ttcomics/ComicPager.java | 7 +++---- 2 files changed, 17 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/org/fox/ttcomics/ComicFragment.java b/src/org/fox/ttcomics/ComicFragment.java index 824de4c..420fa45 100644 --- a/src/org/fox/ttcomics/ComicFragment.java +++ b/src/org/fox/ttcomics/ComicFragment.java @@ -21,30 +21,34 @@ public class ComicFragment extends Fragment { private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; - private Bitmap m_comic; private int m_page; public ComicFragment() { super(); } - public ComicFragment(ComicArchive archive, int page) { + public ComicFragment(int page) { super(); + m_page = page; + } + + public Bitmap loadImage(ComicArchive archive, int page) { try { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeStream(archive.getItem(page), null, options); - options.inSampleSize = CommonActivity.calculateInSampleSize(options, 512, 512); + options.inSampleSize = CommonActivity.calculateInSampleSize(options, 512, 512); options.inJustDecodeBounds = false; - m_comic = BitmapFactory.decodeStream(archive.getItem(page), null, options); - } catch (OutOfMemoryError e) { + return BitmapFactory.decodeStream(archive.getItem(page), null, options); + } catch (OutOfMemoryError e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } - m_page = page; + + return null; } @Override @@ -55,12 +59,13 @@ public class ComicFragment extends Fragment { TouchImageView image = (TouchImageView) view.findViewById(R.id.comic_image); if (savedInstanceState != null) { - m_comic = savedInstanceState.getParcelable("comic"); m_page = savedInstanceState.getInt("page"); } - if (m_comic != null) { - image.setImageBitmap(m_comic); + ComicPager pager = (ComicPager) getActivity().getSupportFragmentManager().findFragmentByTag(CommonActivity.FRAG_COMICS_PAGER); + + if (pager != null) { + image.setImageBitmap(loadImage(pager.getArchive(), m_page)); image.setMaxZoom(4f); image.setOnScaleChangedListener(new TouchImageView.OnScaleChangedListener() { @@ -94,8 +99,6 @@ public class ComicFragment extends Fragment { @Override public void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); - - out.putParcelable("comic", m_comic); out.putInt("page", m_page); } diff --git a/src/org/fox/ttcomics/ComicPager.java b/src/org/fox/ttcomics/ComicPager.java index e8641db..ea8a502 100644 --- a/src/org/fox/ttcomics/ComicPager.java +++ b/src/org/fox/ttcomics/ComicPager.java @@ -28,14 +28,13 @@ public class ComicPager extends Fragment { @Override public Fragment getItem(int position) { - return new ComicFragment(m_archive, position+1); + return new ComicFragment(position+1); } @Override public int getCount() { return m_archive.getCount(); } - } private PagerAdapter m_adapter; @@ -79,7 +78,7 @@ public class ComicPager extends Fragment { m_fileName = fileName; } - + @SuppressLint("NewApi") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -88,7 +87,7 @@ public class ComicPager extends Fragment { m_adapter = new PagerAdapter(getActivity().getSupportFragmentManager()); - ViewPager pager = (ViewPager) view.findViewById(R.id.comics_pager); + final ViewPager pager = (ViewPager) view.findViewById(R.id.comics_pager); if (savedInstanceState != null) { m_fileName = savedInstanceState.getString("fileName"); -- cgit v1.2.3