释放记忆 - 安卓

时间:2015-09-27 04:58:18

标签: android memory-leaks bitmap release

我读了一些关于为Bitmap对象释放内存的文章。我创建了一个示例来测试此问题,如下所示。

MainActivity类:

public class MainActivity extends Activity {
    private Bitmap bitmap;
    private InputStream inputStream;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart() {
        super.onStart();
        try {
            inputStream = getAssets().open("image1.jpg");
            bitmap = BitmapFactory.decodeStream(inputStream);
        }catch(Exception e){
            Log.v("hoabao91", e.getMessage());
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        try {
            inputStream.close();
            inputStream = null;
            bitmap.recycle();
            bitmap = null;
        }catch(Exception e){
            Log.v("hoabao91", e.getMessage());
        }
    }

    public void click(View view){
        startActivity(new Intent(this, TestActivity.class));
    }
}

TestActivity类:

public class TestActivity extends Activity {

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

activity_main view:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Submit"
        android:onClick="click"/>
</LinearLayout>

activity_test:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.hoa.test2.TestActivity">

</RelativeLayout>

我使用android调试工具来跟踪已分配的内存

这是我部署应用时的状态

enter image description here

系统分配给所有对象,包括位图对象11.96 MB

然后我单击“提交”按钮转到TestActivity,将调用onPause()方法,并通过recycle()释放位图对象。 但已分配内存的状态不会降低。相比之下,它增加了一点(11.99 MB)!

有人帮我解释了这个或者给了我一个减少分配内存的解决方案。为了避免大型应用程序的内存泄漏。

0 个答案:

没有答案