我想在這裏做的是我想調用一個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