android 登录对象传递,Java-Android AsyncTask和对象传递

在登录过程中,我需要一些有关代码基本体系结构的帮助.我正在实现异步Http处理,以使ICS正常工作.

这段代码的目标是登录我的应用程序.

>从UI提交登录表单(Login.java)

>连接到我们的服务器,并通过http传递用户名/密码以获取XML结果

>将XML结果解析为数组. (ParseXML.java)

>在用户界面中显示结果反馈.

现在这一切都在我的程序中起作用了,但是在尝试使用可强制执行A??syc HTTP连接的ICS测试之后,我很快意识到了我的问题,并让我怀疑我的整个设计…

当前工作的基本方式:

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 {

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).

特别是我关心从onPostExecute()返回Login.doFinished().这对记忆不好吗?我担心这会导致ParseXML对象避免垃圾回收,因为它现在返回到Login Activity,一旦用户再次登录并保持ParseXML打开,它将继续运行.

我来自PHP背景,因此我一直试图将所有XML解析和HTTP处理保持在ParseXML“模块”中,以便我知道在哪里寻找对此进行更改的信息.

目前,ParseXML处理所有http工作,即getUsers,getChannels,addUser,delUser,doLogin等.但是我是否应该尝试在相关屏幕/活动中移动所有代码以处理XML和HTTP连接(异步),使它们独立存在? ?

我真的很感谢任何帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值