我正在开发一个非常简单的android 应用程序,它设计有5 个活动,每个活动都有自己的RelativeLayout。
1)父母(或家庭)2-5)家庭的孩子,每个人都有自己的后退按钮,调用finish()。
问题: 我在任何地方都使用图像资产,并且通过不断地从父级切换到子级来对应用程序进行压力测试。由于古老的“超出虚拟机预算”错误,我内存不足。!
我尝试过的: 我尝试减少将我的大部分对象设置为静态引用的图像资产,以便在子活动完成时对它们进行垃圾收集。我安装了 MAT 工具来检查 HPROFS 转储,这非常令人困惑。我已阅读有关 SoftReferences 或 WeakReferences 和文件缓存技术的信息,但尚未实现它们。
已编辑...这是我对每个儿童活动的 onDestroy。
@Override
protected void onDestroy() {
super.onDestroy();
// unbind all drawables starting from the first viewgroup
unbindDrawables(findViewById(R.id.info_layout));
c2 = null;
runnable = null;
mFont = null;
root = null;
myThread = null;
myImage = null;
v = null;
txtCurrentTime = null;
common = null;
System.gc();
Log.e("Info", "Info destroyed.");
}
还...所有这些都在类声明的开头声明为私有。它们是否需要声明为静态或其他?
问题: 我可以使用一种不同类型的布局,它不会涉及在活动上调用完成(),比如 TabHost 或 ViewFlipper 类似的东西......这将阻止我不得不开始一个新活动并完成它
或者也许......当我在我的 Child 活动上调用 finish() 以便所有东西都被垃圾收集时的一种方式?
欢迎使用 XML 和/或代码示例。
我对任何一种方式或任何其他可以建议的方式都持开放态度。
谢谢。瑞克