我正在开发一个由不同屏幕组成的应用程序,我将其设计为具有不同布局的不同活动。对于每个屏幕,有两个大 (1536x2048) png 文件,用作覆盖背景(它们是 alpha 混合的)。目前,活动的布局 xml 文件是这样的:
<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:background="@drawable/backgroundPic0"
tools:context=".TakvimActivity" >
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backgroundPic1"
/>
</RelativeLayout>
目前,我能够从主要活动前往三个不同的活动。我只是简单地这样做
Intent intent = new Intent(this, TakvimActivity.class);
startActivity(intent);
我知道每次启动新活动并setContentView
调用该方法时,背景图像都会消耗大约 24 MB 的内存。当我第一次前往新屏幕时,返回主屏幕并前往第二个新活动时,应用程序由于内存不足异常而崩溃,并显示“在 blabla-byte 分配上内存不足”。(请注意,它不会完全在第二个 Activity 转换时崩溃,有时在第三个转换时会崩溃。)在我看来,当我从一个活动。我检查了当前活动是否通过覆盖onDestroy
方法,我看到它被正确调用。GC 不应该在 Activity 被销毁时清除所有与 UI 相关的内存,因为对其视图层次结构的引用被删除了吗?是否有我遗漏的东西,例如,是否有明确的方法来清除我的代码中没有包含的 Activity 的内存?