我想在这里做的是我想调用一个web服务,并基于它的响应我可能会调用另一个web服务或启动一个activity.I是已经写在一个单独的线程的Web服务,但问题是,我打电话在工作线程中的活动, 为了让自己更清楚我已经把我的伪代码。从工作者线程开始android活动?这是一个很好的做法
if (User ID and Password present in the shared preference) THEN
Utils.checkauthorisation(API) //Web Service Call
if(respsonse is Paswordexpired)
erase password from DB
Goto (LOGIN SCREEN)//startActivity Call
else if(download of images hasnt happened today)) THEN
UTILS.DownloadImages//Web service call
if(response==connectivityorOtherError)
Toast respective Message
GOTO (GALLERY SCREEN)//startActivity Call
else if (response==confilicted Data)
Goto (CHANGES SCREEN)//startActivity Call
endif
endif
endif
我正打算显示一个进度条,并做所有这些事件在这样
progressDialog = ProgressDialog.show(this, "Loading",
"Authenticating Please wait.");
new Thread() {
public void run() {
///execute the pseudo code
startActivity(intent); //Is this a good practice
Message msg = Message.obtain();
msg.what = 1;
messagHandler.sendMessage(msg);
}
}.start();
private static Handler messagHandler = new Handler() {
public void handleMessage(Message message) {
super.handleMessage(message);
switch (message.what) {
case 1:
progressDialog.dismiss();
break;
default:
break;
}
}
};
但是,这扰乱了我的东西线程是我必须开始在辅助线程活动在这里。 这是一个很好的做法吗?我最初认为我们只能从UI线程开始一个活动。这里后端发生的过程是什么(线程意义上的)?如果这不是一个好的做法,那么实现我的伪代码的其他选择是什么?
PS:抱歉再次问这个问题。我早些时候问过同样的问题,但没有完全传达我想要的东西,所以收到了工人线程(我的问题的一部分)开始活动的替代方案,但没有得到答案,牛逼收到任何答案的“这是一个很好的做法”
感谢
感谢您的回答。但怀疑是我能够从我的工作线程调用startActivity并转到另一个活动。是否有任何问题要做? – rogerstone 2012-02-21 06:16:37
它工作正常,但不推荐,因为它可能导致任务堆栈问题,并可能导致内存泄漏。 – Suman 2012-02-21 07:12:08