title: java.lang.OutOfMemoryError: Failed to allocate a 756946956 byte allocation with 16777216 free bytes and 433MB until OOM
body: <p>I want to change the background image of my Activity's layout every time I launch that activity. For that reason, inside <code>onResume()</code>, I am randomly setting the background image of layout like this:</p>
  
  <pre><code>@Override
  public void onResume(){
      super.onResume();
      Random r = new Random();
      int randNumber = r.nextInt(homeBackgroundImage.length);
      mBackgroundLayout.setBackground(ResourcesCompat.getDrawable(getResources(), homeBackgroundImage[randNumber], null));
  }
  </code></pre>
  
  <p>But, I am getting exception in the following line:</p>
  
  <pre><code>mBackgroundLayout.setBackground(ResourcesCompat.getDrawable(getResources(), homeBackgroundImage[randNumber], null));
  </code></pre>
  
  <p>This is the logcat output:</p>
  
  <pre><code>java.lang.OutOfMemoryError: Failed to allocate a 756946956 byte allocation with 16777216 free bytes and 433MB until OOM
                                                                          at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                          at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                                          at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
                                                                          at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
                                                                          at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
                                                                          at android.content.res.Resources.loadDrawableForCookie(Resources.java:2635)
                                                                          at android.content.res.Resources.loadDrawable(Resources.java:2540)
                                                                          at android.content.res.Resources.getDrawable(Resources.java:806)
                                                                          at android.support.v4.content.res.ResourcesCompatApi21.getDrawable(ResourcesCompatApi21.java:27)
                                                                          at android.support.v4.content.res.ResourcesCompat.getDrawable(ResourcesCompat.java:60)
                                                                          at in.avara.app.avaravrplayer.Activity.MainActivity.onResume(MainActivity.java:167)
                                                                          at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
                                                                          at android.app.Activity.performResume(Activity.java:6327)
                                                                          at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
                                                                          at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
                                                                          at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
  </code></pre>
  
  <p>Someone, please suggest me What is the optimized and best way to change background image of a layout randomly on every launch.</p>
  
  <p><strong>NOTE:</strong> I have already tried adding <code>android:hardwareAccelerated="false"</code> , <code>android:largeHeap="true"</code>. But, it didn't work in my case.</p>
  
  <p>Thanks in advance!</p>