我有一个包含2个非常简单的Activity对象的系统 - MainActivity启动TestActivity,它上面有一个非常大的图像。在TestActivity中,我按下后退按钮返回MainActivity,但是我的记忆(大约45-50米)没有得到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>
答案 0 :(得分:0)
当您不再需要时,应释放ImageView
占用的内存。
在您的情况下,您可以使用此 -
onDestroy()
中执行此操作
yourImageView.setImageDrawable(null);
答案 1 :(得分:0)
您可以通过手动调用destroy
activity
finish()
来做一件事。
但仍然无法保证内存不会被占用。
答案 2 :(得分:0)
我想真的没有泄漏。如果我试图进行一些巨大的测试活动,它将成功显示&#34;泄露的活动&#34;。我认为Android运行时由于性能原因没有立即执行这些活动,即用户将来可能会再次回到这些活动。只有在足够长的时间过去之后才能接受那些流浪的活动。