我读了一些关于为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调试工具来跟踪已分配的内存
这是我部署应用时的状态
系统分配给所有对象,包括位图对象11.96 MB
然后我单击“提交”按钮转到TestActivity,将调用onPause()方法,并通过recycle()释放位图对象。 但已分配内存的状态不会降低。相比之下,它增加了一点(11.99 MB)!
有人帮我解释了这个或者给了我一个减少分配内存的解决方案。为了避免大型应用程序的内存泄漏。