2017-02-25 78 views
0

在我的活动中有很多图像,过了一段时间后应用程序崩溃(内存不足错误)。所以我想清除图像,如果我关闭了活动,但它没有奏效。我的代码:如何清除Imageview

import android.content.Intent; 
import android.graphics.drawable.BitmapDrawable; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.Spinner; 

import com.google.android.gms.appindexing.Action; 
import com.google.android.gms.appindexing.AppIndex; 
import com.google.android.gms.appindexing.Thing; 
import com.google.android.gms.common.api.GoogleApiClient; 

public class Jubel extends AppCompatActivity { 
    public Spinner spinner1; 
    public String[] spinnertext = {"Laufbewegungen", "Abschlussbewegungen (1/2)", "Abschlussbewegungen (2/2)", "EAS FC - Freischaltbare Objekte"}; 
    public ImageView imageView12; 
    public ImageView imageView8; 
    public ImageView imageView16; 
    public ImageView imageView17; 
    public ImageView imageView18; 
    public ImageView imageView20; 
    public ImageView imageView21; 
    public ImageView imageView15; 
    public ImageView imageView13; 
    public ImageView imageView22; 
    public ImageView imageView19; 
    public ImageView imageView23; 
    public ImageView imageView24; 
    public ImageView imageView25; 
    public ImageView imageView26; 
    public ImageView imageView27; 
    public ImageView imageView29; 
    public ImageView imageView28; 
    public ImageView imageView30; 
    public ImageView imageView31; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_jubel); 

     imageView12 = (ImageView) findViewById(R.id.imageView12); 
     imageView12.setImageResource(R.drawable.thumbsuck2); 
     imageView8 = (ImageView) findViewById(R.id.imageView8); 
     imageView8.setImageResource(R.drawable.onearmraised1); 
     imageView16 = (ImageView) findViewById(R.id.imageView16); 
     imageView16.setImageResource(R.drawable.wristflick6); 
     imageView17 = (ImageView) findViewById(R.id.imageView17); 
     imageView17.setImageResource(R.drawable.aeroplane7); 
     imageView18 = (ImageView) findViewById(R.id.imageView18); 
     imageView18.setImageResource(R.drawable.pointtosky8); 
     imageView20 = (ImageView) findViewById(R.id.imageView20); 
     imageView20.setImageResource(R.drawable.canyouhearme11); 
     imageView21 = (ImageView) findViewById(R.id.imageView21); 
     imageView21.setImageResource(R.drawable.handsout12); 
     imageView15 = (ImageView) findViewById(R.id.imageView15); 
     imageView15.setImageResource(R.drawable.armsout5); 
     imageView13 = (ImageView) findViewById(R.id.imageView13); 
     imageView13.setImageResource(R.drawable.eartwist3); 
     imageView22 = (ImageView) findViewById(R.id.imageView22); 
     imageView22.setImageResource(R.drawable.fingerpoint4); 
     imageView19 = (ImageView) findViewById(R.id.imageView19); 
     imageView19.setImageResource(R.drawable.telephone10); 
     imageView23 = (ImageView) findViewById(R.id.imageView23); 
     imageView23.setImageResource(R.drawable.shhhhh9); 
     imageView24 = (ImageView) findViewById(R.id.imageView24); 
     imageView24.setImageResource(R.drawable.comeon13); 
     imageView25 = (ImageView) findViewById(R.id.imageView25); 
     imageView25.setImageResource(R.drawable.doublearmswing15); 
     imageView26 = (ImageView) findViewById(R.id.imageView26); 
     imageView26.setImageResource(R.drawable.flyingbird16); 
     imageView27 = (ImageView) findViewById(R.id.imageView27); 
     imageView27.setImageResource(R.drawable.handonhead17); 
     imageView29 = (ImageView) findViewById(R.id.imageView29); 
     imageView29.setImageResource(R.drawable.armspointingup19); 
     imageView28 = (ImageView) findViewById(R.id.imageView28); 
     imageView28.setImageResource(R.drawable.heartsymbol18); 
     imageView30 = (ImageView) findViewById(R.id.imageView30); 
     imageView30.setImageResource(R.drawable.windmill20); 
     imageView31 = (ImageView) findViewById(R.id.imageView31); 
     imageView31.setImageResource(R.drawable.blowkisses14); 

     spinner1 = (Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<String> spinneradapter = new ArrayAdapter<String>(Jubel.this, android.R.layout.simple_spinner_dropdown_item, spinnertext); 
     spinner1.setAdapter(spinneradapter); 
     spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

       int spinnerposition = spinner1.getSelectedItemPosition(); 

       switch (spinnerposition) { 

        case 0: { 
         break; 
        } 

        case 1: { 
         finish(); 
         Intent intent = new Intent(Jubel.this,JubelAbschluss.class); 
         startActivity(intent); 

         break; 
        } 

        case 2: { 
         finish(); 
         Intent intent = new Intent(Jubel.this,JubelAbschluss2.class); 
         startActivity(intent); 

         break; 
        } 

        case 3: { 
         finish(); 
         Intent intent = new Intent(Jubel.this,JubelEAS.class); 
         startActivity(intent); 

         break; 

        } 
       } 
      } 
        @Override 
        public void onNothingSelected (AdapterView <?> parent){ 

        } 
       });} 





    public void ToHome(View view) { 
     Intent intent = new Intent(this,MainActivity.class); 
     startActivity(intent); 
     finish(); 
    } 

    @Override 
    public void onStop() { 
     ((BitmapDrawable)imageView12.getDrawable()).getBitmap().recycle(); 
     imageView12.setImageDrawable(null); 
     ((BitmapDrawable)imageView8.getDrawable()).getBitmap().recycle(); 
     imageView8.setImageDrawable(null); 
     ((BitmapDrawable)imageView16.getDrawable()).getBitmap().recycle(); 
     imageView16.setImageDrawable(null); 
     ((BitmapDrawable)imageView17.getDrawable()).getBitmap().recycle(); 
     imageView17.setImageDrawable(null); 
     ((BitmapDrawable)imageView18.getDrawable()).getBitmap().recycle(); 
     imageView18.setImageDrawable(null); 
     ((BitmapDrawable)imageView20.getDrawable()).getBitmap().recycle(); 
     imageView20.setImageDrawable(null); 
     ((BitmapDrawable)imageView21.getDrawable()).getBitmap().recycle(); 
     imageView21.setImageDrawable(null); 
     ((BitmapDrawable)imageView15.getDrawable()).getBitmap().recycle(); 
     imageView15.setImageDrawable(null); 
     ((BitmapDrawable)imageView13.getDrawable()).getBitmap().recycle(); 
     imageView13.setImageDrawable(null); 
     ((BitmapDrawable)imageView22.getDrawable()).getBitmap().recycle(); 
     imageView22.setImageDrawable(null); 
     ((BitmapDrawable)imageView19.getDrawable()).getBitmap().recycle(); 
     imageView19.setImageDrawable(null); 
     ((BitmapDrawable)imageView23.getDrawable()).getBitmap().recycle(); 
     imageView23.setImageDrawable(null); 
     ((BitmapDrawable)imageView24.getDrawable()).getBitmap().recycle(); 
     imageView24.setImageDrawable(null); 
     ((BitmapDrawable)imageView25.getDrawable()).getBitmap().recycle(); 
     imageView25.setImageDrawable(null); 
     ((BitmapDrawable)imageView26.getDrawable()).getBitmap().recycle(); 
     imageView26.setImageDrawable(null); 
     ((BitmapDrawable)imageView27.getDrawable()).getBitmap().recycle(); 
     imageView27.setImageDrawable(null); 
     ((BitmapDrawable)imageView28.getDrawable()).getBitmap().recycle(); 
     imageView28.setImageDrawable(null); 
     ((BitmapDrawable)imageView29.getDrawable()).getBitmap().recycle(); 
     imageView29.setImageDrawable(null); 
     ((BitmapDrawable)imageView30.getDrawable()).getBitmap().recycle(); 
     imageView30.setImageDrawable(null); 
     ((BitmapDrawable)imageView31.getDrawable()).getBitmap().recycle(); 
     imageView31.setImageDrawable(null); 
     super.onStop(); 
    } 
} 
+1

您不需要30个图像显示[ MCVE。请[edit] –

+0

请阅读。 https://developer.android.com/topic/performance/graphics/index.html –

+0

解决方案在您的情况下将回收视图与滑翔加载图像 –

回答

0

您可能想尝试使用Glide

它将处理回收位图大部分为您,这将需要处理大量的内存问题时,你会遇到图像时使用应用程序。

但是,很可能您的布局设计是主要的罪魁祸首,您可能需要考虑同时在屏幕上显示较少的图像或使用较低分辨率的图像。

希望这会有所帮助。

0

在你的代码试图改变

@覆盖 公共无效的onStop(){ ..............

........ ............................... .................. ................ }

@Override

public void onFinish(){ .......................... }