【发布时间】:2016-11-23 00:13:05
【问题描述】:
我有一个由 2 个非常简单的 Activity 对象组成的系统 - MainActivity 启动 TestActivity,它上面有一个非常大的图像。在 TestActivity 中,我按下返回按钮并返回 MainActivity,但是我的内存(大约 45-50m)没有被 GCed。有什么想法吗?
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, TestActivity.class);
startActivity(intent);
}
}
TestActivity.java
public class TestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
}
MainActivity 布局
<?xml version="1.0" encoding="utf-8"?>
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.leaked.leaked.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
TestActivity 布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/earth_poster_large"/>
</FrameLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.leaked.leaked">
<application>
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TestActivity">
</activity>
</application>
</manifest>
【问题讨论】:
-
真的是内存泄漏吗?
-
看起来是这样。做了一个堆转储并在 Android Studio 中分析它。将图片添加到问题正文。另外,它真的不是垃圾收集那么大的内存(我专门在 TestActivity 的布局中使用了一个非常大的图像)
标签: java android android-activity memory-leaks