I am trying to implement paging in one activity but I keep running out of memory. The app runs till the 4th page but when it gets to the 5th it crashes. I've tried increasing the JVM heap size but the app still crashes at this one point where it runs out of memory to allocate.
This is my main file:
public class S1Intro extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_s1);
MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager myPager = (ViewPager) findViewById(R.id.intro_panels);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
}
Intent intent = new Intent(S1Intro.this,S2CharacterIntro.class);
public void nextScreen(View view){
startActivity(intent);
}
This is the PageAdapter Class:
public class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return 5;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.s1a;
break;
case 1:
resId = R.layout.s1b;
break;
case 2:
resId = R.layout.s1c;
break;
case 3:
resId = R.layout.s1d;
break;
case 4:
resId = R.layout.s1e;
break;
}
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
This is the 1st page's xml file:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/a"/>
</LinearLayout>
All the other pages are just like this with different drawables. Except the 5th page, which looks like this:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_screen2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.miniproject32.writeup.S1Intro">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/e"/>
<Button
style="@style/buttonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button_s1"
android:text="@string/start"
android:onClick="nextScreen"/>
</RelativeLayout>
This is the logcat:
03-30 12:17:31.866 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:31.866 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:31.896 498-498/? I/art: Alloc sticky concurrent mark sweep GC freed 1003(75KB) AllocSpace objects, 0(0B) LOS objects, 17% free, 74MB/89MB, paused 885us total 33.721ms
03-30 12:17:31.896 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:31.906 1139-1139/? D/ResourcesManager: For user 0 new overlays fetched Null
03-30 12:17:31.916 498-498/? I/art: Alloc partial concurrent mark sweep GC freed 71(2848B) AllocSpace objects, 0(0B) LOS objects, 17% free, 74MB/90MB, paused 823us total 17.333ms
03-30 12:17:31.916 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:31.946 498-498/? I/art: Alloc concurrent mark sweep GC freed 115(20KB) AllocSpace objects, 0(0B) LOS objects, 17% free, 74MB/90MB, paused 885us total 24.108ms
03-30 12:17:31.946 498-498/? I/art: Forcing collection of SoftReferences for 36MB allocation
03-30 12:17:31.946 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:31.946 612-836/? D/ResourcesManager: For user 0 new overlays fetched Null
03-30 12:17:31.966 498-504/? W/art: Suspending all threads took: 19.805ms
03-30 12:17:31.966 498-498/? I/art: Alloc concurrent mark sweep GC freed 11(344B) AllocSpace objects, 0(0B) LOS objects, 17% free, 74MB/90MB, paused 1.434ms total 23.834ms
03-30 12:17:31.966 498-498/? W/art: Throwing OutOfMemoryError "Failed to allocate a 38125292 byte allocation with 16777216 free bytes and 21MB until OOM"
03-30 12:17:31.976 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:31.976 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:31.976 612-836/? D/ResourcesManager: For user 0 new overlays fetched Null
03-30 12:17:31.986 498-498/? I/art: Alloc sticky concurrent mark sweep GC freed 3(1264B) AllocSpace objects, 0(0B) LOS objects, 17% free, 74MB/90MB, paused 915us total 10.620ms
03-30 12:17:31.986 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:31.986 612-612/? I/IntowowAdapter: not wifi, stop request intowow ad
03-30 12:17:31.996 498-498/? I/art: Alloc partial concurrent mark sweep GC freed 10(320B) AllocSpace objects, 0(0B) LOS objects, 17% free, 74MB/90MB, paused 885us total 13.458ms
03-30 12:17:31.996 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:32.026 498-498/? I/art: Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 17% free, 74MB/90MB, paused 1.068ms total 25.024ms
03-30 12:17:32.026 498-498/? I/art: Forcing collection of SoftReferences for 36MB allocation
03-30 12:17:32.026 498-498/? I/art: Starting a blocking GC Alloc
03-30 12:17:32.056 498-498/? I/art: Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 17% free, 74MB/90MB, paused 885us total 24.536ms
03-30 12:17:32.056 498-498/? W/art: Throwing OutOfMemoryError "Failed to allocate a 38125292 byte allocation with 16777216 free bytes and 21MB until OOM"
03-30 12:17:32.056 498-498/? D/skia: --- allocation failed for scaled bitmap
03-30 12:17:32.056 612-612/? I/KBattery: [PLACE] at com.ijinshan.kbatterydoctor.cloud.NewRemoteCloudConfigHelper.b(NewRemoteCloudConfigHelper.java:600)
[NewRemoteCloudConfigHelper]isPackedNotification lastAid = 9
03-30 12:17:32.056 498-498/? E/InputEventReceiver: Exception dispatching input event.
03-30 12:17:32.066 498-498/? E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
03-30 12:17:32.086 612-612/? I/Choreographer: Skipped 81 frames! The application may be doing too much work on its main thread.
03-30 12:17:32.096 498-498/? E/MessageQueue-JNI: java.lang.OutOfMemoryError: Failed to allocate a 38125292 byte allocation with 16777216 free bytes and 21MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:856)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:675)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:2230)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:4279)
at android.content.res.Resources.loadDrawable(Resources.java:4153)
at android.content.res.Resources.loadDrawable(Resources.java:3998)
at android.content.res.TypedArray.getDrawable(TypedArray.java:886)
at android.widget.ImageView.<init>(ImageView.java:157)
at android.widget.ImageView.<init>(ImageView.java:145)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:60)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:56)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1017)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1076)
at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:758)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
at com.miniproject32.writeup.MyPagerAdapter.instantiateItem(MyPagerAdapter.java:40)
at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:111)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1038)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1252)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1120)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:277)
at android.support.v4.view.ViewPager.completeScroll(ViewPager.java:2029)
at android.support.v4.view.ViewPager.onInterceptTouchEvent(ViewPager.java:2159)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2866)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1861)
at android.app.Activity.dispatchTouchEvent(Activity.java:3061)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:67)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2827)
a
03-30 12:17:32.096 498-498/? D/AndroidRuntime: Shutting down VM
03-30 12:17:32.106 498-498/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.miniproject32.writeup, PID: 498
java.lang.OutOfMemoryError: Failed to allocate a 38125292 byte allocation with 16777216 free bytes and 21MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:856)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:675)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:2230)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:4279)
at android.content.res.Resources.loadDrawable(Resources.java:4153)
at android.content.res.Resources.loadDrawable(Resources.java:3998)
at android.content.res.TypedArray.getDrawable(TypedArray.java:886)
at android.widget.ImageView.<init>(ImageView.java:157)
at android.widget.ImageView.<init>(ImageView.java:145)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:60)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:56)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1017)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1076)
at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:758)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
at com.miniproject32.writeup.MyPagerAdapter.instantiateItem(MyPagerAdapter.java:40)
at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:111)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1038)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1252)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1120)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:277)
at android.support.v4.view.ViewPager.completeScroll(ViewPager.java:2029)
at android.support.v4.view.ViewPager.onInterceptTouchEvent(ViewPager.java:2159)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2461)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2866)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1861)
at android.app.Activity.dispatchTouchEvent(Activity.java:3061)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:67)
at com.android.internal.policy.P
How do I fix this? Please help