Безопасно ли передавать экземпляр Activity другому объекту? - PullRequest
4 голосов
/ 11 января 2011

То, что я в основном пытаюсь сделать, это передать экземпляр моей Деятельности другому объекту, который будет создавать динамический интерфейс.

Основная причина, по которой я это делаю, - поддерживать класс 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);

Должен ли я сохранить динамическое здание View в Activity или можно передать экземпляр другим классам для этого?

Если я сохраню это в Деятельности, мне это кажется раздутым, и с ним будет намного сложнее управлять.

1 Ответ

3 голосов
/ 11 января 2011

По моему мнению, нехорошо передавать куда-либо ДЕЯТЕЛЬНОСТЬ - на самом деле, я не уверен, что это вообще что-нибудь сделает.

Что вы можете сделать:

1 - Вы можете создать свой собственный класс, расширить класс View, создать там свой пользовательский интерфейс. То, что вы должны передать этому классу, это контекст вашей деятельности!

например:

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

в Деятельности, которая использует вас 'UI class'

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 - Затем вы можете создать экземпляр вашего класса custom_UI_builder в своей деятельности.

Я не уверен, будет ли это иметь нежелательные последствия для загрузки памяти.

Надеюсь, это сработает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...