我基本上要做的是将我的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构建,还是可以将实例传递给其他类来执行此操作?
如果我将它保留在活动中,它对我来说感觉很臃肿,而且更难管理。
答案 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类的实例。
我不确定这是否会对内存负载产生任何不良影响。
希望它能奏效!