Błąd OutOfMemory przy użyciu ImageView

Próbuję stworzyć aplikację do tworzenia tapet za pomocą ImageView. Wiem, że trudno jest wyświetlić kilka obrazów (zwłaszcza gdy obrazy mają rozmiar 1920x1080), ale zrobiłem inne obrazy o mniejszej rozdzielczości (400x200), które byłyby wyświetlane w aplikacji, ale gdy użytkownik próbuje ustawić obraz jako tapetę otrzymuje ten sam obraz, ale z większą rozdzielczością. Myślałem, że to rozwiąże mój problem, ale tak się nie stało, aplikacja działa dłużej niż wcześniej, ale w pewnym momencie kończy się niepowodzeniem. Zauważyłem, że aplikacja nie działa po ustawieniu 3 obrazów jako tapety. Próbuję użyć garbage collectora, to nie działa. Jakieś pomysły?

Oto mój kod.

package app.technozed.winterwallpapers;

import java.io.IOException;
import android.os.Bundle;
import android.app.Activity;
import android.app.WallpaperManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

ImageView display;
int toPhone;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toPhone = R.drawable.wal1;

    display = (ImageView) findViewById(R.id.WPdisplay);
    ImageView image1 = (ImageView) findViewById(R.id.WPimg1);
    ImageView image2 = (ImageView) findViewById(R.id.WPimg2);
    ImageView image3 = (ImageView) findViewById(R.id.WPimg3);
    ImageView image4 = (ImageView) findViewById(R.id.WPimg4);
    ImageView image5 = (ImageView) findViewById(R.id.WPimg5);
    ImageView image6 = (ImageView) findViewById(R.id.WPimg6);
    ImageView image7 = (ImageView) findViewById(R.id.WPimg7);
    ImageView image8 = (ImageView) findViewById(R.id.WPimg8);
    ImageView image9 = (ImageView) findViewById(R.id.WPimg9);
    ImageView image10 = (ImageView) findViewById(R.id.WPimg10);
    ImageView image11 = (ImageView) findViewById(R.id.WPimg11);
    ImageView image12 = (ImageView) findViewById(R.id.WPimg12);
    ImageView image13 = (ImageView) findViewById(R.id.WPimg13);
    ImageView image14 = (ImageView) findViewById(R.id.WPimg14);
    ImageView image15 = (ImageView) findViewById(R.id.WPimg15);
    ImageView image16 = (ImageView) findViewById(R.id.WPimg16);
    ImageView image17 = (ImageView) findViewById(R.id.WPimg17);
    ImageView image18 = (ImageView) findViewById(R.id.WPimg18);
    ImageView image19 = (ImageView) findViewById(R.id.WPimg19);
    ImageView image20 = (ImageView) findViewById(R.id.WPimg20);
    ImageView image21 = (ImageView) findViewById(R.id.WPimg21);
    ImageView image22 = (ImageView) findViewById(R.id.WPimg22);
    ImageView image23 = (ImageView) findViewById(R.id.WPimg23);
    ImageView image24 = (ImageView) findViewById(R.id.WPimg24);
    ImageView image25 = (ImageView) findViewById(R.id.WPimg25);
    ImageView image26 = (ImageView) findViewById(R.id.WPimg26);
    ImageView image27 = (ImageView) findViewById(R.id.WPimg27);
    ImageView image28 = (ImageView) findViewById(R.id.WPimg28);
    ImageView image29 = (ImageView) findViewById(R.id.WPimg29);
    ImageView image30 = (ImageView) findViewById(R.id.WPimg30);
    Button setWall = (Button) findViewById(R.id.BsetWall);
    image1.setOnClickListener(this);
    image2.setOnClickListener(this);
    image3.setOnClickListener(this);
    image4.setOnClickListener(this);
    image5.setOnClickListener(this);
    image6.setOnClickListener(this);
    image7.setOnClickListener(this);
    image8.setOnClickListener(this);
    image9.setOnClickListener(this);
    image10.setOnClickListener(this);
    image11.setOnClickListener(this);
    image12.setOnClickListener(this);
    image13.setOnClickListener(this);
    image14.setOnClickListener(this);
    image15.setOnClickListener(this);
    image16.setOnClickListener(this);
    image17.setOnClickListener(this);
    image18.setOnClickListener(this);
    image19.setOnClickListener(this);
    image20.setOnClickListener(this);
    image21.setOnClickListener(this);
    image22.setOnClickListener(this);
    image23.setOnClickListener(this);
    image24.setOnClickListener(this);
    image25.setOnClickListener(this);
    image26.setOnClickListener(this);
    image27.setOnClickListener(this);
    image28.setOnClickListener(this);
    image29.setOnClickListener(this);
    image30.setOnClickListener(this);
    setWall.setOnClickListener(this);
    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


@Override
public void onClick(View v) {
    switch (v.getId()){
    case R.id.WPimg1:
         display.setImageResource(R.drawable.wal1);
         toPhone = R.drawable.wal1;
         break;
    case R.id.WPimg2:
         display.setImageResource(R.drawable.wal2);
         toPhone = R.drawable.wal2;
         break;
    case R.id.WPimg3:
         display.setImageResource(R.drawable.wal3);
         toPhone = R.drawable.wal3;
         break;
    case R.id.WPimg4:
         display.setImageResource(R.drawable.wal4);
         toPhone = R.drawable.wal4;
         break;
    case R.id.WPimg5:
         display.setImageResource(R.drawable.wal5);
         toPhone = R.drawable.wal5;
         break;
    case R.id.WPimg6:
         display.setImageResource(R.drawable.wal6);
         toPhone = R.drawable.wal6;
         break;
    case R.id.WPimg7:
         display.setImageResource(R.drawable.wal7);
         toPhone = R.drawable.wal7;
         break;
    case R.id.WPimg8:
         display.setImageResource(R.drawable.wal8);
         toPhone = R.drawable.wal8;
         break;
    case R.id.WPimg9:
         display.setImageResource(R.drawable.wal9);
         toPhone = R.drawable.wal9;;
         break;
    case R.id.WPimg10:
         display.setImageResource(R.drawable.wal10);
         toPhone = R.drawable.wal10;
         break;
    case R.id.WPimg11:
         display.setImageResource(R.drawable.wal11);
         toPhone = R.drawable.wal11;
         break;
    case R.id.WPimg12:
         display.setImageResource(R.drawable.wal12);
         toPhone = R.drawable.wal12;
         break;
    case R.id.WPimg13:
         display.setImageResource(R.drawable.wal13);
         toPhone = R.drawable.wal13;
         break;
    case R.id.WPimg14:
         display.setImageResource(R.drawable.wal14);
         toPhone = R.drawable.wal14;
         break;
    case R.id.WPimg15:
         display.setImageResource(R.drawable.wal15);
         toPhone = R.drawable.wal15;
         break;
    case R.id.WPimg16:
         display.setImageResource(R.drawable.wal16);
         toPhone = R.drawable.wal16;
         break;
    case R.id.WPimg17:
         display.setImageResource(R.drawable.wal17);
         toPhone = R.drawable.wal17;
         break;
    case R.id.WPimg18:
         display.setImageResource(R.drawable.wal18);
         toPhone = R.drawable.wal18;
         break;
    case R.id.WPimg19:
         display.setImageResource(R.drawable.wal19);
         toPhone = R.drawable.wal19;
         break;
    case R.id.WPimg20:
         display.setImageResource(R.drawable.wal20);
         toPhone = R.drawable.wal20;
         break;
    case R.id.WPimg21:
         display.setImageResource(R.drawable.wal21);
         toPhone = R.drawable.wal21;
         break;
    case R.id.WPimg22:
         display.setImageResource(R.drawable.wal22);
         toPhone = R.drawable.wal22;
         break;
    case R.id.WPimg23:
         display.setImageResource(R.drawable.wal23);
         toPhone = R.drawable.wal23;
         break;
    case R.id.WPimg24:
         display.setImageResource(R.drawable.wal24);
         toPhone = R.drawable.wal24;
         break;
    case R.id.WPimg25:
         display.setImageResource(R.drawable.wal25);
         toPhone = R.drawable.wal25;
         break;
    case R.id.WPimg26:
         display.setImageResource(R.drawable.wal26);
         toPhone = R.drawable.wal26;
         break;
    case R.id.WPimg27:
         display.setImageResource(R.drawable.wal27);
         toPhone = R.drawable.wal27;
         break;
    case R.id.WPimg28:
         display.setImageResource(R.drawable.wal28);
         toPhone = R.drawable.wal28;
         break;
    case R.id.WPimg29:
         display.setImageResource(R.drawable.wal29);
         toPhone = R.drawable.wal29;
         break;
    case R.id.WPimg30:
         display.setImageResource(R.drawable.wal30);
         toPhone = R.drawable.wal30;
         break;
    case R.id.BsetWall:
         try{
                  WallpaperManager.getInstance(getApplicationContext()).setResource(toPhone);
             Toast.makeText(getApplicationContext(), "Wallpaper was set!", Toast.LENGTH_SHORT).show();
         } catch(IOException e) {
             e.printStackTrace();
             Toast.makeText(getApplicationContext(), "No privileges!", Toast.LENGTH_SHORT).show();
         }
         break;
    }

    }

    }

A oto LogCat.

--- allocation failed for scaled bitmap
Shutting down VM
threadid=1: thread exiting with uncaught exception (group=0x41618ba8)
FATAL EXCEPTION: main
Process: app.technozed.winterwallpapers, PID: 2574
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
at android.content.res.Resources.loadDrawable(Resources.java:2110)
at android.content.res.Resources.getDrawable(Resources.java:700)
at android.widget.ImageView.resolveUri(ImageView.java:638)
at android.widget.ImageView.setImageResource(ImageView.java:367)
at app.technozed.winterwallpapers.MainActivity.onClick(MainActivity.java:143)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
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:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)

questionAnswers(2)

yourAnswerToTheQuestion