1

My app is working on my physical device (MotoG3) and emulator(Nexus 5) and passes test on 11 out of 13 devices on Pre-launch crash test on Google Play Developer Console. The two devices it is failing are on Galaxy Note 2 and 3 (Android 4.4) as shown in the image below -

enter image description here

I am not sure what is going wrong, is there any memory leak, if so how to catch that? This is all new to me.

The outOfMemoryError is -

FATAL EXCEPTION: main
 Process: com.tdp.tdp, PID: 17269
 java.lang.OutOfMemoryError
    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:677)
    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:507)
    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:872)
    at android.content.res.Resources.loadDrawable(Resources.java:3054)
    at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
    at android.widget.ImageView.<init>(ImageView.java:133)
    at android.support.v7.widget.au.<init>(Unknown Source)
    at android.support.v7.widget.au.<init>(Unknown Source)
    at android.support.v7.a.bh.a(Unknown Source)
    at android.support.v7.a.as.c(Unknown Source)
    at android.support.v7.a.as.a(Unknown Source)
    at android.support.v4.view.ak.onCreateView(Unknown Source)
    at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:173)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:690)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
    at com.thedailypiece.thedailypiece.c.a(Unknown Source)
    at android.support.v4.app.n.b(Unknown Source)
    at android.support.v4.app.z.a(Unknown Source)
    at android.support.v4.app.z.a(Unknown Source)
    at android.support.v4.app.e.run(Unknown Source)
    at android.support.v4.app.z.e(Unknown Source)
    at android.support.v4.app.z.b(Unknown Source)
    at android.support.v4.app.ah.b(Unknown Source)
    at android.support.v4.view.ViewPager.a(Unknown Source)
    at android.support.v4.view.ViewPager.a(Unknown Source)
    at android.support.v4.view.ViewPager.a(Unknown Source)
    at android.support.v4.view.ViewPager.setCurrentItem(Unknown Source)
    at com.github.paolorotolo.appintro.AppIntroViewPager.setCurrentItem(Unknown Source)
    at com.github.paolorotolo.appintro.b.onClick(Unknown Source)
    at android.view.View.performClick(View.java:4630)
    at android.view.View$PerformClick.run(View.java:19339)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:157)
    at android.app.ActivityThread.main(ActivityThread.java:5335)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    at dalvik.system.NativeStart.main(Native Method)
PRYM
  • 513
  • 4
  • 12
  • try any of this fixes: http://stackoverflow.com/questions/21012006/android-outofmemoryerror/35327864#35327864 – CommonSenseCode May 22 '16 at 18:23
  • Looks like you are dealing with a bitmap. Look into downsizing the image its using, or recycle the bitmap when finished. – CodeCody May 22 '16 at 18:24

2 Answers2

2

The Galaxy Notes have nonstandard dpi configurations. They are probably loading really large bitmaps (or scaling up the ones you've provided). (Why does my Galaxy Note 3 have the same DP dimensions as a much smaller phone?)

You have a few solutions,

Provide all dpi levels of image assets so the system does not have to scale the missing resolutions.

Use an image library, (such as Glide or Picasso) to load the images at the best resolutions.

Most importantly, make sure the files are cut to the correct sizes. Having super large bitmaps is useless if they can't be shown onscreen.

Shmuel
  • 3,916
  • 2
  • 27
  • 45
  • I added all dpi level in drawables and the apk is being tested, will let you know if that solves anything – PRYM May 22 '16 at 19:27
1

This is pretty happening in every single android app. You have some Image that takes a lot of memory in your AppIntroViewPager Fragments, so you need to downsample it to not ocuupate all of the app's memory.

You should read this Displaying Bitmaps in Your UI and consider using some image loading library like Picasso, Glide.

Ahmed Hegazy
  • 12,395
  • 5
  • 41
  • 64