本文介绍了内存不足:回收图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个画册。我有70的活动,并在每个人是一个图像(JPEG,PNG)。和两个箭头来回走。将图像保存在绘制文件夹。我知道有其他的方法来创建照片专辑,但现在我想让这种方式。经过一段时间的应用程序崩溃,因为一个内存溢出错误。它并不总是停止在相同的点,但有时第47 activitiy,后52活动其他时间之后。如果我只减少每一个图像到20KB然后应用程序运行没有问题。但图像模糊。如果图像是100KB,他们是雪亮的话,但应用程序崩溃。有人告诉我,我一定要回收的图像是不内存不足。像这样的:

 如果(位图!= NULL){
    bitmap.recycle();
    位= NULL;
}
 

但我不知道该怎么做。这是我的code:

 公共类图片说明延伸活动{

            公共ImageView的IV;

            @覆盖
            保护无效的onCreate(包savedInstanceState){
                // TODO自动生成方法存根
                super.onCreate(savedInstanceState);
                的setContentView(R.layout.pic1);

               IV =(ImageView的)findViewById(R.id.imageView1);}

               公共无效MENUE(查看视图){
            意图I =新的意图(这一点,MainActivity.class);
            startActivity(ⅰ);
            完();}

               公共无效PIC0(查看视图){
            意图I =新的意图(这一点,Picture0.class);
            startActivity(ⅰ);
            完();

}

               公共无效PIC2(查看视图){
            意图I =新的意图(这一点,Picture2.class);
            startActivity(ⅰ);
            完();


}}
 

基于XML code:

 < XML版本=1.0编码=UTF-8&GT?;
    < RelativeLayout的的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent>

         < ImageView的
            机器人:ID =@ + ID / imageView1
            机器人:layout_width =200dp
            机器人:layout_height =200dp
            机器人:layout_centerInParent =真
            机器人:layout_marginLeft =14dp
            机器人:SRC =@可绘制/图片1/>

        < ImageView的
            机器人:ID =@ + ID / imageView4
            机器人:layout_width =100dp
            机器人:layout_height =100dp
            机器人:layout_alignParentBottom =真
            机器人:layout_alignParentRight =真
            机器人:SRC =@可绘制/ arrowright
            机器人:的onClick =PIC2/>

        < ImageView的
            机器人:ID =@ + ID / imageView2
            机器人:layout_width =100dp
            机器人:layout_height =80dp
            机器人:layout_alignTop =@ + ID / imageView3
            机器人:layout_centerHorizo​​ntal =真
            机器人:的onClick =MENUE
            机器人:SRC =@可绘制/ MENUE/>

        < ImageView的
            机器人:ID =@ + ID / imageView4
            机器人:layout_width =100dp
            机器人:layout_height =100dp
            机器人:layout_alignParentBottom =真
            机器人:layout_alignParentRight =真
            机器人:SRC =@可绘制/ arrowleft
            机器人:的onClick =PIC0/>


         < / RelativeLayout的>
 

解决方案

现在的问题是,你没有完成previous活动,这就是为什么回收位图没有帮助。如果你想继续用这种方式,你可以在ONSTART设置的图像,并删除它的onStop或覆盖后退按钮,完成并跟踪你的活动,并重新启动他们的时候回来pressed实施画廊。

I created a photoalbum. I've got 70 activities and in everyone is one Image (jpeg, png). And two arrows to go Back and forth. The Images are saved in drawable-folder. I know there are other ways to create a photo-album but now I want to make it that way. The app crashes after a time, because of a OutOfMemory-Error. It doesn't always stop on the same Point, but sometimes after the 47th activitiy, a other time after 52 activities. If I reduce every Image only to 20KB then the app runs without Problems. But the Images are blurred. If the Images are 100KB they are sharp then, but the app crashes. Someone told me I have to recycle the Images to be not out of Memory. Like this:

if (bitmap != null) {
    bitmap.recycle();
    bitmap = null;
} 

But I don't know how to do that. This is my code:

     public class Picture1 extends Activity {

            public ImageView iv; 

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.pic1);

               iv = (ImageView)findViewById(R.id.imageView1);}

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

               public void Pic0 (View view){
            Intent i = new Intent(this, Picture0.class);             
            startActivity(i);
            finish();

}

               public void Pic2 (View view){
            Intent i = new Intent(this, Picture2.class);             
            startActivity(i);
            finish();


}}

XML-Code:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

         <ImageView
            android:id="@+id/imageView1"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_centerInParent="true"
            android:layout_marginLeft="14dp"
            android:src="@drawable/picture1" />

        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:src="@drawable/arrowright" 
            android:onClick="Pic2"/>

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="100dp"
            android:layout_height="80dp"
            android:layout_alignTop="@+id/imageView3"
            android:layout_centerHorizontal="true"
            android:onClick="Menue"
            android:src="@drawable/Menue" />

        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:src="@drawable/arrowleft" 
            android:onClick="Pic0"/>


         </RelativeLayout>
解决方案

The problem is that you don't finish previous activities, that's why recycle bitmap doesn't help. If you want to continue implement gallery in this way you can set image in onStart and remove it in onStop or override back button, finish and track your activities and relaunch them when back pressed.

这篇关于内存不足:回收图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 22:59