out of memory - Android InvalidStateException on ViewPager when setting page limit too small -


i have problem viewpager image slider gallery. setting page limit 3 app craches on third image because child has parent. set limit number because want avoid large memory leaks, event 3 images uses 150mb of allocated memory incredibly huge ammount. maybe if resize image before uploading can them work more pages ? anyways, here code viewpager:

viewpager mviewpager = (viewpager) findviewbyid(r.id.imagepager);     vieweradapter adapter = new vieweradapter(this);     //adapter.notifydatasetchanged();     mviewpager.setadapter(adapter);     mviewpager.setoffscreenpagelimit(3);     mviewpager.setcurrentitem(number);     mviewpager.setonpagechangelistener(new viewpager.onpagechangelistener() {         @override         public void onpagescrolled(int position, float positionoffset, int positionoffsetpixels) {             time.settext(caluculatetimeago(mainactivity.time[position]));             if (mainactivity.distances[position] < 1000) {                 dist.settext(string.valueof(mainactivity.distances[position]) + "m");             } else {                 long f = (long) (mainactivity.distances[position] / 1000);                 dist.settext(string.valueof(f) + "km");             }             author.settext(mainactivity.users[position]);             text.settext(mainactivity.text1[position]+mainactivity.tags[position]);         }          @override         public void onpageselected(int position) {          }          @override         public void onpagescrollstatechanged(int state) {          }     }); 

and here adapter definition:

public class vieweradapter extends pageradapter {     context mcontext;     public vieweradapter(context context) {         mcontext = context;         mlayoutinflater = (layoutinflater) mcontext.getsystemservice(context.layout_inflater_service);     }     layoutinflater mlayoutinflater;     @override     public int getcount() {         return mainactivity.imglink.length;     }      @override     public boolean isviewfromobject(view arg0, object arg1) {         return arg0 == (view) arg1;     }      @override     public void destroyitem(viewgroup container, int position, object object) {         container.removeview((view) object);         picasso.with(container.getcontext()).cancelrequest((imageview) object);     }      @override     public charsequence getpagetitle(int position) {         return (position + "/" + getcount());     }      @override     public object instantiateitem(viewgroup container, int position) {          final view itemview = mlayoutinflater.inflate(r.layout.pager_item,container,false);         final imageview photo = (imageview) itemview.findviewbyid(r.id.photoslide);         photo.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 fullscreen = ((bitmapdrawable)photo.getdrawable()).getbitmap();                 intent intent = new intent(showmarkercontent.this, fullscreenimageactivity.class);                 startactivity(intent);             }         });         picasso.with(container.getcontext()).load("mywebsite" + mainactivity.imglink[position]).into(photo);         container.addview(photo);         return photo;     } } 

well, managed make work-around problem. forgot set cropping of photo , therefore photos large this. , also, set offscreenpagelimit 30 avoid error (this work-around because large quantity of image come out of memory error) now, here adapter code:

@override     public object instantiateitem(viewgroup container, int position) {          final view itemview = mlayoutinflater.inflate(r.layout.pager_item,container,false);         final imageview photo = (imageview) itemview.findviewbyid(r.id.photoslide);         photo.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 fullscreen = ((bitmapdrawable)photo.getdrawable()).getbitmap();                 intent intent = new intent(showmarkercontent.this, fullscreenimageactivity.class);                 startactivity(intent);             }         });         picasso.with(container.getcontext()).load("mywebsite" + mainactivity.imglink[position]).fit().centercrop().into(photo);         container.addview(itemview);         return itemview;     } 

Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -