Android应用最佳图像按钮布局?

时间:2013-05-31 19:02:28

标签: android image layout

我正在开发一个非常简单的Android应用程序,它设计有5个活动,每个活动都有自己的RelativeLayout。

1)家长(或家庭) 2-5)家庭的孩子,每个孩子都有自己的后退按钮,称为完成()。

Heres what it the home screen looks like

问题: 我到处都在使用图像资源,我一直在不断地从Parent转换为Child,从而对应用程序进行压力测试。由于历史悠久的“VM预算超出”错误,我无法运行内存。!

我尝试了什么: 我已经尝试将我的大多数对象的图像资源修剪为静态引用,以便在子活动完成时对它们进行垃圾回收。 我已经安装了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.");
    }

另外......所有这些都在类声明的开头声明为私有。他们需要被声明为静态还是别的?

问题: 是否有一种不同类型的布局我可以使用,不会涉及调用活动上的finish(),如TabHost或ViewFlipper类似的东西......这将阻止我开始一个新的活动并完成它

或许......当我在我的Child活动上调用finish()以便一切都被垃圾收集时的方式?

欢迎使用XML和/或代码示例。

我对任何一种方式或任何其他可以建议的方式持开放态度。

感谢。 瑞克

1 个答案:

答案 0 :(得分:0)

如果您在重复从父级切换到子级后运行OOM,那么您可能正在泄漏子活动。我会运行一个hprof,并确保你没有积累子活动,如果你试图找出哪些引用没有被释放,并确保它们在onDestroy中变为null。

这通常发生在框架有一个指向您的子上下文的指针时,它不会被告知通过取消注册,或者通过应用程序中的某种循环引用,可能通过非静态子类。 / p>