title: Fragments are not being released from memory
body: <p>I have an activity that contains a View Pager that has an adapter FragmentStatePagerAdapter.
  each time enter the activity it will take up 200mb of memory, after going back out of the activity(finish()) and then re entering it it will append and double the memory used on the phone.</p>
  
  <p>After troubleshooting the problem it seems as if the fragment manager is not releasing the fragments although im trying to remove them but its just not working.</p>
  
  <p>I tried emptying the fragment that is being added to make sure its not something internal inside the fragment the the problem remains.</p>
  
  <p>my adapter code is </p>
  
  <pre><code>   private class ChildrenPagerAdapter extends FragmentStatePagerAdapter
     {
        private List&lt;ChildBean&gt; childrenBean;
  
        public ChildrenPagerAdapter(FragmentManager fm, List&lt;ChildBean&gt; bean)
        {
           super(fm);
           this.childrenBean = bean;
        }
  
        @Override
        public int getItemPosition(Object object)
        {
           return PagerAdapter.POSITION_NONE;
        }
  
        @Override
        public Fragment getItem(int position)
        {
  
           ReportFragment reportFragment = new ReportFragment();
           reportFragment.childBean = childrenBean.get(position);
           reportFragment.position = position;
           reportFragment.mPager = mPager;
           if(position == 0)
           {
              reportFragment.mostLeft = true;
           }
           if(position == childrenNumber - 1)
           {
              reportFragment.mostRight = true;
           }
  
           return reportFragment;
        }
  
        @Override
        public int getCount()
        {
           return childrenNumber;
        }
  
        @Override
        public void destroyItem(ViewGroup container, int position, Object object)
        {
           // TODO Auto-generated method stub
           super.destroyItem(container, position, object);
        }
     }
  </code></pre>
  
  <p>my activity code is </p>
  
  <pre><code>    public class ReportActivity extends CustomActivity
  {
     public ImageLoader imageLoader;
     private ViewPager mPager;
     private PagerAdapter mPagerAdapter;
     private int childrenNumber;
     private int currentChild;
  
     @Override
     protected void onDestroy()
     {
        mPager.removeAllViews();
        mPager.removeAllViewsInLayout();
        mPager.destroyDrawingCache();
        mPagerAdapter = null;
        mPager = null;
        System.gc();
        super.onDestroy();
     }
  
     @Override
     protected void onCreate(Bundle savedInstanceState)
     {
  
        super.onCreate(savedInstanceState);
        setCustomTitle(string.title_activity_reports);
        this.currentChild = getIntent().getIntExtra("itemselected", -1);
  
        getSupportFragmentManager().
     }
  
     @Override
     protected void onResume()
     {
        super.onResume();
        mPager = (ViewPager) findViewById(R.id.vpchildren);
        mPager.setOffscreenPageLimit(6);
        childrenNumber = MainActivity.bean.size();
        mPagerAdapter = new ChildrenPagerAdapter(getSupportFragmentManager(), MainActivity.bean);
        mPager.setAdapter(mPagerAdapter);
        mPager.setCurrentItem(currentChild);
     }
  }
  </code></pre>
  
  <p>Fragment code :</p>
  
  <pre><code>public class ReportFragment extends Fragment
  {
  
     public ChildBean childBean;
     public int position;
     public ImageView img;
     public ImageLoader imageLoader;
     public DisplayImageOptions options;
     private int pee = 0;
     private int poop = 0;
     private double sleep = 0.0;
     public ViewPager mPager;
     public boolean mostLeft = false;
     public boolean mostRight = false;
  
     public ReportFragment()
     {
  
     }
  
     @Override
     public void onDestroyView()
     {
        super.onDestroyView();
     }
  
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
     {
        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.report_fragment, container, false);
  
        if(mostLeft)
        {
           rootView.findViewById(id.btnleft).setVisibility(View.GONE);
        }
        if(mostRight)
        {
           rootView.findViewById(id.btnright).setVisibility(View.GONE);
        }
  
        rootView.findViewById(id.btnleft).setOnClickListener(new OnClickListener()
        {
  
           @Override
           public void onClick(View v)
           {
              mPager.setCurrentItem(mPager.getCurrentItem() - 1);
  
           }
        });
  
        rootView.findViewById(id.btnright).setOnClickListener(new OnClickListener()
        {
  
           @Override
           public void onClick(View v)
           {
              mPager.setCurrentItem(mPager.getCurrentItem() + 1);
  
           }
        });
  
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);
        Date dobchild = new Date();
  
        ((TextView) rootView.findViewById(id.tvday)).setText(sdf.format(dobchild));
  
        ImageView childimg = (ImageView) rootView.findViewById(id.img_child);
        ((TextView) rootView.findViewById(id.tvchildname)).setText(childBean.childname);
        ((TextView) rootView.findViewById(id.tvclassname)).setText(((CustomApplication) getActivity().getApplication()).preferenceAccess.getCurrentClassName());
  
        Date dob = null;
        String age = "";
        try
        {
           dob = sdf.parse(childBean.childdob);
           age = GeneralUtils.getAge(dob.getTime(), getString(string.tv_day), getString(string.tv_month), getString(string.tv_year));
        }
        catch(ParseException e)
        {
           // TODO:
        }
        ((CustomTextView) rootView.findViewById(id.tvchildage)).setText(age);
  
        DisplayImageOptions options =
           new DisplayImageOptions.Builder().showImageForEmptyUri(drawable.noimage).showImageOnFail(drawable.noimage).showStubImage(drawable.noimage).cacheInMemory()
              .imageScaleType(ImageScaleType.NONE).build();
  
        imageLoader = ImageLoader.getInstance();
        imageLoader.displayImage(childBean.childphoto, childimg, options);
        final TextView tvpee = (TextView) rootView.findViewById(id.tvpeetime);
        final TextView tvpoop = (TextView) rootView.findViewById(id.tvpootimes);
        final TextView tvsleep = (TextView) rootView.findViewById(id.tvsleeptime);
  
        rootView.findViewById(id.btnaddpee).setOnClickListener(new OnClickListener()
        {
           @Override
           public void onClick(View v)
           {
              pee = pee + 1;
              if(pee &gt; 9)
              {
                 Toast.makeText(getActivity(), getString(string.tvareyousurepee), Toast.LENGTH_LONG).show();
              }
              tvpee.setText(String.format(getString(string.tvtimes), pee));
           }
        });
  
        rootView.findViewById(id.btnminuspee).setOnClickListener(new OnClickListener()
        {
           @Override
           public void onClick(View v)
           {
              if(pee &gt; 0)
              {
                 pee = pee - 1;
                 tvpee.setText(String.format(getString(string.tvtimes), pee));
              }
           }
        });
  
        rootView.findViewById(id.btnpluspoo).setOnClickListener(new OnClickListener()
        {
           @Override
           public void onClick(View v)
           {
              poop = poop + 1;
              if(poop &gt; 9)
              {
                 Toast.makeText(getActivity(), getString(string.tvareyousurepoop), Toast.LENGTH_LONG).show();
              }
              tvpoop.setText(String.format(getString(string.tvtimes), poop));
           }
        });
  
        rootView.findViewById(id.btnminuspoo).setOnClickListener(new OnClickListener()
        {
           @Override
           public void onClick(View v)
           {
              if(poop &gt; 0)
              {
                 poop = poop - 1;
                 tvpoop.setText(String.format(getString(string.tvtimes), poop));
              }
           }
        });
  
        rootView.findViewById(id.btnaddsleep).setOnClickListener(new OnClickListener()
        {
           @Override
           public void onClick(View v)
           {
              sleep = sleep + 0.25;
              tvsleep.setText(String.format(getString(string.tvhours), sleep));
           }
        });
  
        rootView.findViewById(id.btnminussleep).setOnClickListener(new OnClickListener()
        {
           @Override
           public void onClick(View v)
           {
              if(sleep &gt; 0)
              {
                 sleep = sleep - 0.25;
                 tvsleep.setText(String.format(getString(string.tvhours), sleep));
              }
           }
        });
  
        rootView.findViewById(id.btnsave).setOnClickListener(new OnClickListener()
        {
           @Override
           public void onClick(View v)
           {
              Toast.makeText(getActivity(), "Report Saved.", Toast.LENGTH_LONG).show();
              getActivity().finish();
           }
        });
  
        return rootView;
     }
  }
  </code></pre>
  
  <p>Please advise... Thanks</p>