Android AsyncTask y paso de objetos

Necesito ayuda en la arquitectura básica de mi código en el proceso de inicio de sesión. Estoy implementando el procesamiento Async Http para que las cosas funcionen para ICS.

El objetivo de este código es iniciar sesión en mi aplicación.

Formulario de inicio de sesión enviar desde la interfaz de usuario (Login.java)conéctese a nuestro servidor y pase el nombre de usuario / contraseña a través de http obtener el resultado XMLanalizar los resultados XML a la matriz. (ParseXML.java)mostrar los resultados de los resultados en la interfaz de usuario.

Ahora, todo esto funcionó en mi programa; sin embargo, después de probar con ICS, que aplica las conexiones HTTP de Asyc, rápidamente me di cuenta de mi problema y me llevó a dudar de todo mi diseño ...

La forma básica en la que funciona actualmente:

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

En general me preocupa que sea un mal diseño estar haciendo las cosas de esta manera y simplemente debería mover el código de conexión HTTP y http dentro de mi archivo Login.java para que esté todo incluido (IU, HTTP, XML Parsing, Asyc).

Particularmente me preocupa volver a llamar a Login.doFinished () desde onPostExecute (). ¿Esto es malo para la memoria? Me preocupa que eso haga que el objeto ParseXML evite la recolección de basura porque ahora vuelve a la Actividad de inicio de sesión, que continuará ejecutándose una vez que el usuario haya iniciado la sesión y tenga ParseXML abierto.

Vengo de un fondo de PHP, así que he estado tratando de mantener todo mi análisis XML y procesamiento HTTP dentro delParseXML "módulo" para que sepa dónde buscar cambios en esto.

En el momentoParseXML maneja todo el trabajo http, es decir,getUsers, getChannels, addUser, delUser, doLogin etc. ¿Pero debería intentar mover todo el código para manejar conexiones XML y HTTP (asíncronas) dentro de la pantalla / actividad relevante para que sean autónomas?

Realmente aprecio cualquier ayuda en esto

Respuestas a la pregunta(3)

Su respuesta a la pregunta