5

Actually, I am trying to create a app with n number of multimedia files which includes images and videos. My apps size is around 34MB, and my assets size is around 60mb. While I am loading the app in normal devices we are not facing any problem, But the devices having 2K resolutions such as Nexus 6P, HTC, LG etc., the apps get crash in the middle of the process with the error "Out Of Memory". I have produced the error report with this. I have tried to bitmap factory also. At the same time I am using videos in array method.

Can anyone help with this issue?

FATAL EXCEPTION: main Process: com.example.we.appname, PID: 9353

java.lang.OutOfMemoryError: Failed to allocate a 1660396 byte allocation with 1243880 free bytes and 1214KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155) at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.loadDrawable(Resources.java:858) at android.content.res.TypedArray.getDrawable(TypedArray.java:928) at android.graphics.drawable.AnimationDrawable.inflateChildElements(AnimationDrawable.java:327) at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:297) at android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130) at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227) at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200) at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:715) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.getDrawable(Resources.java:771) at android.content.Context.getDrawable(Context.java:525) at android.view.View.setBackgroundResource(View.java:18228) at com.example.kq.meettheshps.Score_Card.onCreate(Score_Card.java:58) at android.app.Activity.performCreate(Activity.java:6679) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Community
  • 1
  • 1
NatheemYousf
  • 97
  • 1
  • 2
  • 11
  • you have to load your bitmap efficiently according to scren sizes..see this https://developer.android.com/training/displaying-bitmaps/load-bitmap.html – rafsanahmad007 Dec 16 '16 at 12:24

4 Answers4

15

Simple Solution which I found is, Add hardwareAccelerated & largeHeap under application AndroidManifest.xml

<application
     android:allowBackup="true"
     android:hardwareAccelerated="false"
     android:icon="@mipmap/ic_launcher"
     android:label="@string/app_name"
     android:largeHeap="true"
     android:supportsRtl="true"
     android:theme="@style/AppTheme">
Narendra Sorathiya
  • 3,770
  • 2
  • 34
  • 37
3

It's a common error when you dealing with Bitmap so add this line in AndroidManifest.xml: android:largeHeap="true"

 <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:largeHeap="true"
        android:hardwareAccelerated="false"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar">

Hope it will be helpful.

ॐ Rakesh Kumar
  • 1,318
  • 1
  • 14
  • 24
Wajid khan
  • 842
  • 9
  • 18
2

It sounds like you are either caching too many files in RAM or instantiating the same bitmaps and videos over and over until you run out of memory.

You should not write your own image loading and caching code on Android in 2016 unless you have unusual requirements. Use one of the libraries that have solved this problem. See Picasso v/s Imageloader v/s Fresco vs Glide for more guidance.

Community
  • 1
  • 1
Rasmusob
  • 508
  • 3
  • 13
0

This is happening because of large size image. Try with small size image i.e. of your phone screen resolution.

I had the same problem. Tried reducing the image size in Paint with 2100 x 1300 px and it worked but the app was lagging very much.

Mika Sundland
  • 18,120
  • 16
  • 38
  • 50
LEGEND MORTAL
  • 336
  • 3
  • 18