Android AsyncTask e passagem de objetos

Preciso de ajuda na arquitetura básica do meu código em torno do processo de login. Estou implementando o processamento Http Async para fazer com que as coisas funcionem para o ICS.

O objetivo deste código é fazer login no meu aplicativo.

Formulário de login enviado pela interface do usuário (Login.java)conectar-se ao nosso servidor e passar o nome de usuário / senha via http get XML resultanalisar resultados XML para matriz. (ParseXML.java)exibir feedback de resultados na interface do usuário.

Agora, tudo isso funcionou no meu programa, no entanto, depois de tentar testar com ICS que impõe conexões HTTP Asyc eu rapidamente percebi o meu problema e levei-me a duvidar de todo o meu projeto ...

a maneira básica como funciona atualmente:

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);
      }
    }
  }

Eu estou principalmente preocupado que seu design ruim esteja fazendo as coisas dessa maneira e eu deveria simplesmente mover o código de conexão XML e http dentro do meu arquivo Login.java para que tudo seja incluído (UI, HTTP, XML Parsing, Asyc).

Particularmente eu estou preocupado em ligar de volta para Login.doFinished () de onPostExecute (). isso é ruim para a memória? Estou preocupado que isso faria com que o objeto ParseXML evitasse a coleta de lixo porque agora está voltando para a Atividade de Login, que continuará em execução assim que o usuário estiver conectado, mantendo o ParseXML aberto.

Eu venho de um fundo PHP, então eu tenho tentado manter toda a minha análise XML e processamento HTTP dentro doParseXML "módulo" para que eu saiba onde procurar mudanças para isso.

No momentoParseXML lida com todo o trabalho http, ou seja,getUsers, getChannels, addUser, delUser, doLogin Mas devo tentar mover todo o código para lidar com conexões XML e HTTP (async) dentro da tela / atividade relevante para que eles sejam independentes?

Eu realmente aprecio qualquer ajuda sobre isso

questionAnswers(3)

yourAnswerToTheQuestion