Android AsyncTask и передача объектов

Мне нужна помощь по базовой архитектуре моего кода в процессе входа в систему. Я внедряю обработку Async Http, чтобы все работало на ICS.

Цель этого кода - войти в мое приложение.

Login form submit from UI (Login.java) connect to our server and pass username / password via http get XML result parse XML results to array. (ParseXML.java) display result feedback in UI.

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

основной способ, которым это в настоящее время работает:

Login.java:

  class Login {
    ...
    ParseXML myXMLParser = new ParseXML();  
    myXMLParser.doLogin(username, password, Login.this);    

    public doFinished(result) {
      // update UI
    }
    ...
  }

ParseXML.java:

  class ParseXML {
    // class variable to hold login object for async to access
    public Login loginObj;
    ...
    public void doLogin(String _username, String _password, Login _l) {
      loginObj = (Login) _l;
      ...

      // create loginUrl string to run through async
      ...
      new DownloadFilesTask().execute(loginUrl);
    }

    class DownloadFilesTask extends AsyncTask<a, b, c> {
      doInBackground() {
        // do stuff
        // download result of http call
        // parse XML
      }

      onPostExecute(result) {        
        // call the public class variable of login object i have and tell it to update the UI
        // pass back the result array.
        loginObj.doFinished(result);
      }
    }
  }

Меня больше всего беспокоит то, что это плохой дизайн, и я должен просто переместить код соединения XML и http в мой файл Login.java, чтобы он был включен (UI, HTTP, XML Parsing, Asyc).

Particularly i'm concerned with calling back to Login.doFinished() от onPostExecute (). это плохо для памяти? Я обеспокоен тем, что это может привести к тому, что объект ParseXML избежит сбора мусора, поскольку теперь он возвращается к действию входа в систему, которое будет продолжаться, как только пользователь войдет в свою очередь, удерживая ParseXML открытым.

Я пришел из PHP, поэтому я пытался сохранить весь мой анализ XML и обработку HTTP в пределахParseXML & Quot; модуль & Quot; так что я знаю, где искать изменения в этом.

В данный моментParseXML обрабатывает всю работу http, т.е.getUsers, getChannels, addUser, delUser, doLogin и т. д. Но стоит ли пытаться переместить весь код для обработки XML и HTTP-соединений (асинхронных) в пределах соответствующего экрана / действия, чтобы они были автономными?

Я действительно ценю любую помощь в этом

Ответы на вопрос(3)

Ваш ответ на вопрос