安全地将Activity的实例传递给另一个对象?

时间:2011-01-11 11:10:05

标签: android architecture memory-management

我基本上要做的是将我的Activity实例传递给另一个构建动态UI的对象。

我这样做的主要原因是保持Activity类清洁。

这样做会有什么影响吗?它会影响垃圾收集并导致内存泄漏吗?

这是我正在做的一个例子:

的活动:

/* uses the instance of the Activity to build Views which are loaded from XML files (for non technical users to add content */
ContentHelper ch = new ContentHelper(MyActivity.this);

我应该在Activity中保留动态View构建,还是可以将实例传递给其他类来执行此操作?

如果我将它保留在活动中,它对我来说感觉很臃肿,而且更难管理。

1 个答案:

答案 0 :(得分:3)

在我看来,将ACTIVITY传递到某个地方并不是一个好主意 - 实际上我不确定这是否会做任何事情。

你能做的是:

1 - 您可以创建自己的类,扩展View类,在那里构建您的UI。 您必须传递给该课程的是您的活动背景!

例如:

class Custom_UI_Builder extends View {
    public  Custom_UI_Builder(Context cxt) {
        super(cxt);
        // more stuff - your UI components...
    }
}   

在使用“UI类”

的Activity中
public myActivity extends Activity{
    @Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    myView = new Custom_UI_Builder(this);

            //what every else you need...

        mainLayout = new LinearLayout(this.getApplicationContext());
    mainLParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    mainLayout.setLayoutParams(mainLParam);
    mainLayout.setOrientation(LinearLayout.VERTICAL);
            mainLayout.addView(myView, LayoutParams.MATCH_PARENT, 390);
    setContentView(mainLayout);

}}

2 - 然后,您可以在Activity中创建custom_UI_builder类的实例。

我不确定这是否会对内存负载产生任何不良影响。

希望它能奏效!