奇妙な問題が発生しています...私のアプリケーションは、別のスレッドでいくつかのWebサービス呼び出しを実行することを目的としています。Webサービスの呼び出しが終了すると、ユーザーは別のアクティビティに移動します。ユーザーがホームボタンを押すか、現在のアクティビティを終了する場合、Webサービス呼び出しスレッドがまだ実行中であれば、Webサービスを終了する必要があります。したがって、スレッド終了メソッドをOnPause状態にします。
スレッド内で実行されているメソッドブロックは次のとおりです。
private Thread _webserviceThread;
void WebserviceCallThread(){
WebRestult result= WebserviceCall();
if(!result.containsError()){
RunOnUIThread(delegate{
transitionToActivityXYZ();
});
}
}
void RunThreadAction(){
_webserviceThread = new Thread(new ThreadStart(WebserviceCallThread));
_webserviceThread.Start();
}
protected override void OnPause(){
if(_webserviceThread != null && _webserviceThread.IsAlive){
_webserviceThread.Abort();
}
}
Webサービスの呼び出しが完了し、別のページへの移行を開始すると、OnPause状態になります。ただし、奇妙な場合には、アクティビティ遷移がメソッドの最後の行であっても、スレッドがOnPause状態で終了していないと見なされることがあります。
誰かが以前にこの問題に遭遇したことがありますか?もしそうなら、どのようにしてこの問題を解決しましたか?
ありがとう!