私はここでやりたいことは、私がウェブサービスを呼びたいと思っていて、そのレスポンスに基づいて別のウェブサービスを呼び出すか、すでに別のスレッドにWebサービスを書いていますが、問題は私がワーカースレッドでアクティビティを呼び出すことです。 自分自身をもっと明確にするために、疑似コードを入れました。ワーカースレッドからアンドロイドアクティビティを開始しますか?これは良い練習ですか?
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:私は以前同じ質問をしていましたが、正確にそうしたいと伝えられなかったので、ワーカースレッド(私の質問の一部)のアクティビティを開始する代わりに、私は完全にあなたが活動を開始するが、それはあなたの擬似コードの「GOTO」の行にだと仮定している場所
おかげ
回答ありがとうございます。私のワーカースレッドからstartActivityを呼び出して別のactivity.Areにこれを行うには問題がありますか? – rogerstone
正常に動作しますが、タスクスタックの問題を引き起こし、メモリリークを引き起こす可能性があるため、お勧めしません。 – Suman