簡體   English   中英

如何清除Imageview

[英]How can I clear 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();
    }
}

您可能想嘗試使用Glide

它將在很大程度上為您處理回收位圖,這將解決在制作帶有圖像的應用程序時會遇到的很多內存問題。

但是,布局設計很可能是罪魁禍首,您可能需要考慮一次在屏幕上顯示較少的圖像,或者使用較低分辨率的圖像。

希望這可以幫助。

在您的代碼中嘗試更改

@Override public void onStop(){..............

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

@覆蓋

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM